29 个解决方案
#1
在附加时,删除掉日志文件,它会自动建一个的.
#2
但数据库名或许要改一下,如果你的服务器上有同名数据库,或原数据库还想再附加回来的话.
#3
日志文件--附加時刪除路徑,保留數據庫文件路徑
#4
有mdf就可以了,log可以自动创建
#5
EXEC sp_attach_single_file_db @dbname = '库名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'
#6
额,原来的数据库还是在运行着哦。
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
#7
额,原来的数据库还是在运行着哦。
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
#8
sp_attach_single_file_db [ @dbname= ] 'dbname'
, [ @physname= ] 'physical_name'
备注
仅对先前通过显式 sp_detach_db 操作从服务器分离的数据库或复制的数据库使用 sp_attach_single_file_db。
sp_attach_single_file_db 仅对具有单个日志文件的数据库起作用。sp_attach_single_file_db 在将数据库附加到服务器时,它会生成一个新的日志文件。如果该数据库是只读数据库,则会在日志文件的先前位置生成日志文件。
, [ @physname= ] 'physical_name'
备注
仅对先前通过显式 sp_detach_db 操作从服务器分离的数据库或复制的数据库使用 sp_attach_single_file_db。
sp_attach_single_file_db 仅对具有单个日志文件的数据库起作用。sp_attach_single_file_db 在将数据库附加到服务器时,它会生成一个新的日志文件。如果该数据库是只读数据库,则会在日志文件的先前位置生成日志文件。
#9
额,要求是原来的数据库还是需要存在运行的,就是原来的数据文件,日志文件都是还是在用的。新的数据库虽然名字不同,数据文件也不同,但在附加的时候每次都会提示日志文件有误。
#10
你只拷一个数据文件去就能附加了.
#11
-- 附加数据库
exec sp_attach_db '[新数据库名]','[mdf的路径\文件名]'
#12
过来学习一下...
#13
囧,注意是sqlserver2000 的版本,不是2005 或者2008 .我这边用语句或者手工附加 都测试了 不成功。
#14
不会吧,提示什么错误?
楼主可以私信找我喔.
楼主可以私信找我喔.
#15
测试了,改文件名和日志名 是可以的,但如果单单是mdf文件,无论怎么改名,在原来的 日志文件存在却还在使用的情况下,新的数据库都会去引用原来的日志文件,虽然提示会新建一个日志文件。
#16
EXEC sp_attach_single_file_db 'pos2011','D:\MssqlData\MSSQL\Data\pos2011.mdf'
报以下错误:
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'pos2011'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
报以下错误:
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'pos2011'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
#17
use master
go
create database test
go
use master
go
sp_detach_db test
go
/*
在cmd窗口执行下列语句:
copy C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf d:\
del c:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test_log.ldf
*/
go
--sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf'
sp_attach_single_file_db 'test1','d:\test.mdf'
/*
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\data\test_log.LDF' 可能有误。
已创建名为 'd:\test1_log.LDF' 的新日志文件。
*/
go
--use test1
sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf'
/*
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\data\test_log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test_log.LDF' 的新日志文件。
*/
go
--两个数据库都有了
#18
对的,这种先后顺序是可以的,就是原来的那个数据库先不能运行,而且原来的那份日志文件需要被删除或者移动位置。
#19
问题就是在于,附加的时候,不管是有无日志文件,sqlserver 都会通过 MDF文件里的 filename 信息 得到日志文件,并且尝试去找这个文件,如果刚好有这个文件,它就会自动使用这个文件。但如果这个文件在使用中,sqlserver 就会报错而不是自己创建一个。
#20
指定不同文件夾,在同一個實例附加時把數據庫改為新DBName
#21
不同文件夹也没用哦,只要是原来的日志文件没改变过位置,而且在使用,就不能成功。
#22
你是在企業管理器里操作?
附加時刪除這樣這日誌文件路徑
#23
通过 dbcc checkprimaryfile('d:\mssqldata\pos2011.MDF',3) ,发现filename里的值 指定了源MFD文件和日志文件,我想 如何才能修改 MDF里的这个值呢?
#24
恩,企业管理器里 我也测试过了,修改数据库名字,修改数据文件位置和名字,删除日志文件, 它会提示新建日志的方式附加,但还是报错,报原来的那个日志文件有误,其实它还是去引用原来的日志文件了。
#25
那需要停止服务。
#26
dbcc checkprimaryfile('d:\mssqldata\pos2011.MDF',3) ,如何修改MDF里的 filename 的值?
我想通过修改mdf里的值,让他找不到原来的那个文件来解决问题,不知道是否可以~!~
我想通过修改mdf里的值,让他找不到原来的那个文件来解决问题,不知道是否可以~!~
#27
应该不可以,日志文件是数据库运行的重要文档,一个在服务器中的数据库,是不能"找不到"日志文件的,要是"找不到",它一定会立即重建一个.
#28
现在的问题就是他找到了,结果发现日志文件在被使用了,就不能附加新数据库了,真是悲剧啊,所以想修改MDF文件,把里面的日志文件地址改成一个不存在的文件地址,让他自动创建一个。
#29
為什麼不備份后,再還原到一個新庫中去呢?
#1
在附加时,删除掉日志文件,它会自动建一个的.
#2
但数据库名或许要改一下,如果你的服务器上有同名数据库,或原数据库还想再附加回来的话.
#3
日志文件--附加時刪除路徑,保留數據庫文件路徑
#4
有mdf就可以了,log可以自动创建
#5
EXEC sp_attach_single_file_db @dbname = '库名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'
#6
额,原来的数据库还是在运行着哦。
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
#7
额,原来的数据库还是在运行着哦。
我用以下的语句附加数据库,但提示log文件还是有误。
EXEC sp_attach_single_file_db 'test1','X:\代码\sql管理器\Exe\Data\test1.MDF'
#8
sp_attach_single_file_db [ @dbname= ] 'dbname'
, [ @physname= ] 'physical_name'
备注
仅对先前通过显式 sp_detach_db 操作从服务器分离的数据库或复制的数据库使用 sp_attach_single_file_db。
sp_attach_single_file_db 仅对具有单个日志文件的数据库起作用。sp_attach_single_file_db 在将数据库附加到服务器时,它会生成一个新的日志文件。如果该数据库是只读数据库,则会在日志文件的先前位置生成日志文件。
, [ @physname= ] 'physical_name'
备注
仅对先前通过显式 sp_detach_db 操作从服务器分离的数据库或复制的数据库使用 sp_attach_single_file_db。
sp_attach_single_file_db 仅对具有单个日志文件的数据库起作用。sp_attach_single_file_db 在将数据库附加到服务器时,它会生成一个新的日志文件。如果该数据库是只读数据库,则会在日志文件的先前位置生成日志文件。
#9
额,要求是原来的数据库还是需要存在运行的,就是原来的数据文件,日志文件都是还是在用的。新的数据库虽然名字不同,数据文件也不同,但在附加的时候每次都会提示日志文件有误。
#10
你只拷一个数据文件去就能附加了.
#11
-- 附加数据库
exec sp_attach_db '[新数据库名]','[mdf的路径\文件名]'
#12
过来学习一下...
#13
囧,注意是sqlserver2000 的版本,不是2005 或者2008 .我这边用语句或者手工附加 都测试了 不成功。
#14
不会吧,提示什么错误?
楼主可以私信找我喔.
楼主可以私信找我喔.
#15
测试了,改文件名和日志名 是可以的,但如果单单是mdf文件,无论怎么改名,在原来的 日志文件存在却还在使用的情况下,新的数据库都会去引用原来的日志文件,虽然提示会新建一个日志文件。
#16
EXEC sp_attach_single_file_db 'pos2011','D:\MssqlData\MSSQL\Data\pos2011.mdf'
报以下错误:
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'pos2011'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
报以下错误:
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'pos2011'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\MssqlData\MSSQL\Data\POS2010_log.LDF' 可能有误。
#17
use master
go
create database test
go
use master
go
sp_detach_db test
go
/*
在cmd窗口执行下列语句:
copy C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf d:\
del c:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test_log.ldf
*/
go
--sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf'
sp_attach_single_file_db 'test1','d:\test.mdf'
/*
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\data\test_log.LDF' 可能有误。
已创建名为 'd:\test1_log.LDF' 的新日志文件。
*/
go
--use test1
sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test.mdf'
/*
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\data\test_log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\test_log.LDF' 的新日志文件。
*/
go
--两个数据库都有了
#18
对的,这种先后顺序是可以的,就是原来的那个数据库先不能运行,而且原来的那份日志文件需要被删除或者移动位置。
#19
问题就是在于,附加的时候,不管是有无日志文件,sqlserver 都会通过 MDF文件里的 filename 信息 得到日志文件,并且尝试去找这个文件,如果刚好有这个文件,它就会自动使用这个文件。但如果这个文件在使用中,sqlserver 就会报错而不是自己创建一个。
#20
指定不同文件夾,在同一個實例附加時把數據庫改為新DBName
#21
不同文件夹也没用哦,只要是原来的日志文件没改变过位置,而且在使用,就不能成功。
#22
你是在企業管理器里操作?
附加時刪除這樣這日誌文件路徑
#23
通过 dbcc checkprimaryfile('d:\mssqldata\pos2011.MDF',3) ,发现filename里的值 指定了源MFD文件和日志文件,我想 如何才能修改 MDF里的这个值呢?
#24
恩,企业管理器里 我也测试过了,修改数据库名字,修改数据文件位置和名字,删除日志文件, 它会提示新建日志的方式附加,但还是报错,报原来的那个日志文件有误,其实它还是去引用原来的日志文件了。
#25
那需要停止服务。
#26
dbcc checkprimaryfile('d:\mssqldata\pos2011.MDF',3) ,如何修改MDF里的 filename 的值?
我想通过修改mdf里的值,让他找不到原来的那个文件来解决问题,不知道是否可以~!~
我想通过修改mdf里的值,让他找不到原来的那个文件来解决问题,不知道是否可以~!~
#27
应该不可以,日志文件是数据库运行的重要文档,一个在服务器中的数据库,是不能"找不到"日志文件的,要是"找不到",它一定会立即重建一个.
#28
现在的问题就是他找到了,结果发现日志文件在被使用了,就不能附加新数据库了,真是悲剧啊,所以想修改MDF文件,把里面的日志文件地址改成一个不存在的文件地址,让他自动创建一个。
#29
為什麼不備份后,再還原到一個新庫中去呢?