83

我正在尝试从同一服务器上的旧数据库备份创建一个新数据库。使用SQL Server Management Studio并尝试从备份还原到新数据库时出现此错误

System.Data.SqlClient.SqlError: The backup set holds a backup of a database 
other than the existing 'test' database. (Microsoft.SqlServer.Smo)

谷歌搜索后,我发现了这段代码

    RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak'

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',

MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf'
GO

我想知道移动语句是否会与备份来自该服务器的数据库混淆?

谢谢,所有帮助表示赞赏。

4

5 回答 5

144

我应该做什么:

  • 单击右键单击 SQL Server Management Studio 上的“数据库”节点出现的“还原数据库...”浮动菜单。
  • 使用要还原的数据库和新名称填充向导。
  • 重要如果数据库仍然存在,请更改“文件”选项卡中的“还原为”文件名以避免“文件已在使用中,无法覆盖”错误消息。

我所做的

IDk 为什么我更喜欢这样做:

  • 我用我最喜欢的参数创建了一个空白目标数据库。
  • 然后,在“SQL Server Management Studio”还原向导中,寻找覆盖目标数据库的选项。它位于“选项”选项卡中,称为“覆盖现有数据库(WITH REPLACE)”。核实。
  • 请记住在“文件”页面中选择目标文件。

您可以更改向导左侧的“选项卡”(常规、文件、选项)

于 2012-04-24T14:28:35.507 回答
87

甚至可以在根本不创建空白数据库的情况下进行还原。

在 Sql Server Management Studio 中,右键单击Databases并选择Restore Database... 在此处输入图像描述

在“还原数据库”对话框中,照常选择源数据库或设备。选择源数据库后,SSMS 将根据数据库的原始名称填充目标数据库名称。

然后可以更改数据库名称并输入新的目标数据库名称

在此处输入图像描述

使用这种方法,您甚至不需要转到“选项”选项卡并单击“覆盖现有数据库”选项。

此外,数据库文件的命名将与您的新数据库名称一致,您仍然可以根据需要更改文件名。

于 2016-07-13T13:40:34.263 回答
10

检查 Options Over Write Database 对我有用:)

在此处输入图像描述

于 2016-04-13T20:18:30.557 回答
1

把它想象成一个档案。MyDB.Bak 包含 MyDB.mdf 和 MyDB.ldf。

使用 Move 还原表示 HerDB 基本上从备份中获取 MyDB.mdf(和 ldf),并将它们复制为 HerDB.mdf 和 ldf。

因此,如果您在要恢复的服务器实例上已经有一个 MyDb,则不会被触及。

于 2012-04-24T14:38:36.790 回答
0

问题中的脚本只是缺少替换语句,因此恢复脚本将是

RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak' ,

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',
,
MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf' ,  NOUNLOAD,  REPLACE,  STATS = 5
于 2021-04-13T10:58:10.727 回答