克隆SQL Server数据库时出错

时间:2010-12-07 18:13:03

标签: sql sql-server

所以当我尝试这段代码时(一次一行):

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

知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

'Test_Data'很可能不是包含已备份数据库中数据的逻辑文件的名称。根据建议使用RESTORE FILELISTONLY来确定此文件的名称 - 或者右键单击从中进行备份的数据库并查看属性 - 您可以在其中查看与该文件相关联的文件的名称。数据库中。

如果'Test_Data' 是正确的逻辑文件名,那么很可能您在一个.bak文件中存储了多个备份。尝试通过SSMS而不是T-SQL进行恢复,以更好地了解您正在处理的内容 - 您始终可以编写恢复脚本,而不是运行它,以查看它应该如何编写脚本。