我正在编写一个脚本,以使用另一个数据库的.bak文件自动执行恢复一个数据库的过程。我收到错误消息:
备份集保存除现有数据库以外的数据库备份 “ add_BackupDev”数据库。
我在网上找到的答案似乎都具有一种解决方案,该解决方案涉及手动而不是通过脚本完成还原,这对我来说不是一个选择。
这是我的代码。变量@LastDatabaseRestore正在为我的.bak文件传递适当的文件路径。
RESTORE DATABASE add_BackupDev
FILE = N'FILENAME'
FROM DISK = @LastDatabaseRestore
WITH FILE = 1,
MOVE 'add_backupDev' TO 'R:\DATA\add_BackupDev.mdf',
MOVE 'add_BackupDev_log' TO 'L:\LOG\add_BackupDev.ldf',
NOUNLOAD,
REPLACE;
GO
答案 0 :(得分:1)
评论太久
使用WITH REPLACE
选项(如您所列出的)将用备份中包含的数据库覆盖数据库。在脚本中出现该错误的原因可能是因为您使用了FILE
选项。
备份设备名称前面的FILE选项指定逻辑 要从数据库还原的数据库文件的文件名 备份集;例如FILE ='FILENAME'
出现错误的原因可能是因为备份集不是介质集中的第一个数据库备份。您需要在FILE
子句中的WITH
选项中添加正确的数字。
....
WITH FILE = 1, --this may not need to be 1
....
如果不必显式指定文件名,则删除两个FILE
选项。
RESTORE DATABASE add_BackupDev
FROM DISK = @LastDatabaseRestore
WITH
MOVE 'add_backupDev' TO 'R:\DATA\add_BackupDev.mdf',
MOVE 'add_BackupDev_log' TO 'L:\LOG\add_BackupDev.ldf',
NOUNLOAD,
REPLACE;
GO
那应该还原您的数据库。