所以当我尝试这段代码时(一次一行):
BACKUP DATABASE [test] TO DISK = N'C:\test\test.bak' WITH INIT , NOUNLOAD , NAME = N'Test backup', NOSKIP , STATS = 10, NOFORMAT
RESTORE DATABASE [test2] FROM DISK = N'C:\test\test.bak' WITH FILE = 1, MOVE N'test_Data' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test2.MDF', MOVE N'test_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test2_log.LDF', NOUNLOAD, REPLACE, STATS = 10
第一行有效,创建了.bak文件,查询成功。然后我尝试上面的第二行,我得到了这个错误:
Msg 3234, Level 16, State 2, Line 1
Logical file 'test_Data' is not part of database 'test2'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
我正在尝试的代码来自here。
知道我做错了吗?
答案 0 :(得分:3)
'Test_Data'很可能不是包含已备份数据库中数据的逻辑文件的名称。根据建议使用RESTORE FILELISTONLY
来确定此文件的名称 - 或者右键单击从中进行备份的数据库并查看属性 - 您可以在其中查看与该文件相关联的文件的名称。数据库中。
如果'Test_Data' 是正确的逻辑文件名,那么很可能您在一个.bak文件中存储了多个备份。尝试通过SSMS而不是T-SQL进行恢复,以更好地了解您正在处理的内容 - 您始终可以编写恢复脚本,而不是运行它,以查看它应该如何编写脚本。