首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中还原数据库时不能覆盖mdf文件

问在Server中还原数据库时不能覆盖mdf文件
EN

Server Fault用户
提问于 2011-03-08 07:34:26
回答 5查看 72.4K关注 0票数 28

我有一个数据库,里面有一些数据。我为A创建了一个作为A.bak文件的备份。然后创建一个新的空数据库B,然后尝试从A.bak恢复B。但是,Serve告诉我以下错误:

文件'C:\SQL Directory\DATA\A.mdf‘不能被覆盖。数据库'A‘正在使用它。

但是,如果我从Server中删除A,则retore是可以的。

我不明白为什么SQL需要在从单独备份文件恢复时写入原始数据库文件?

谢谢~

EN

回答 5

Server Fault用户

回答已采纳

发布于 2011-03-08 14:25:13

如果还原数据库,Server将在默认情况下尝试将所有数据和日志文件还原到它们的原始位置。由于原始位置仍在原始数据库("A")中,还原失败。您需要使用WITH MOVE子句为数据库中的所有文件指定新的位置。

代码语言:javascript
复制
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

反正也是这样。从磁盘使用还原填充.若要查看备份中的逻辑文件名,请执行以下操作。

票数 23
EN

Server Fault用户

发布于 2018-06-11 03:04:02

WITH MOVE / MOVE是T-SQL的正确解决方案。

顺便说一句,如果您想使用GUI,可以转到Files并重命名:

  • a.MDF
  • a.NDF
  • a.LDF

至

  • b.MDF
  • b.NDF
  • b.LDF
票数 13
EN

Server Fault用户

发布于 2016-01-26 08:58:50

如果有人已经使用了Options页面并激活了Overwrite the existing database (WITH REPLACE)选项之后,在中搜索解决方案:

只需单击Restore As列并更改*.mdf文件和*.ldf文件的文件名。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/244665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档