从同一服务器上的另一个数据库的备份创建新数据库?

时间:2012-04-24 14:16:29

标签: sql database sql-server-2008

我正在尝试从同一服务器上的旧数据库备份创建一个新数据库。 使用 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

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

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

5 个答案:

答案 0 :(得分:113)

我认为这比这更容易。

  • 首先,创建一个空白目标数据库。
  • 然后,在“SQL Server Management Studio”还原向导中,查找覆盖目标数据库的选项。它位于“选项”选项卡中,名为'覆盖现有数据库(WITH REPLACE)'。检查一下。
  • 请记住在“文件”页面中选择目标文件。

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

答案 1 :(得分:41)

甚至可以在不创建空白数据库的情况下进行恢复。

在Sql Server Management Studio中,右键单击数据库,然后选择还原数据库... enter image description here

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

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

enter image description here

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

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

答案 2 :(得分:8)

检查写入数据库的选项对我有用:)

enter image description here

答案 3 :(得分:1)

将其视为存档。 MyDB.Bak包含MyDB.mdf和MyDB.ldf。

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

因此,如果您已经在服务器实例上安装了MyDb,那么您将无法触及它。

答案 4 :(得分:0)

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

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