我有一个数据库,里面有一些数据。我为A创建了一个作为A.bak文件的备份。然后创建一个新的空数据库B,然后尝试从A.bak恢复B。但是,Serve告诉我以下错误:
文件'C:\SQL Directory\DATA\A.mdf‘不能被覆盖。数据库'A‘正在使用它。
但是,如果我从Server中删除A,则retore是可以的。
我不明白为什么SQL需要在从单独备份文件恢复时写入原始数据库文件?
谢谢~
发布于 2011-03-08 14:25:13
如果还原数据库,Server将在默认情况下尝试将所有数据和日志文件还原到它们的原始位置。由于原始位置仍在原始数据库("A")中,还原失败。您需要使用WITH MOVE子句为数据库中的所有文件指定新的位置。
RESTORE DATABASE B FROM DISK = 'A.bak'
WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
REPLACE --Needed if database B already exists反正也是这样。从磁盘使用还原填充.若要查看备份中的逻辑文件名,请执行以下操作。
发布于 2018-06-11 03:04:02
WITH MOVE / MOVE是T-SQL的正确解决方案。
顺便说一句,如果您想使用GUI,可以转到Files并重命名:
至

发布于 2016-01-26 08:58:50
如果有人已经使用了Options页面并激活了Overwrite the existing database (WITH REPLACE)选项之后,在中搜索解决方案:
只需单击Restore As列并更改*.mdf文件和*.ldf文件的文件名。
https://serverfault.com/questions/244665
复制相似问题