我正在尝试从同一服务器上的旧数据库备份创建一个新数据库。 使用 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
我想知道移动语句是否会混淆备份来自该服务器的数据库?
谢谢,所有帮助表示赞赏。
答案 0 :(得分:113)
我认为这比这更容易。
您可以更改向导左侧的“标签”(常规,文件,选项)
答案 1 :(得分:41)
甚至可以在不创建空白数据库的情况下进行恢复。
在Sql Server Management Studio中,右键单击数据库,然后选择还原数据库...
在“还原数据库”对话框中,正常选择“源数据库”或“设备”。 选择源数据库后,SSMS将根据数据库的原始名称填充目标数据库名称。
然后可以更改数据库的名称,输入新的目标数据库名称。
使用这种方法,您甚至不需要转到“选项”选项卡并单击“#34;覆盖现有数据库"选项。
此外,数据库文件将与您的新数据库名称一致地命名,如果需要,您仍然可以选择更改文件名。
答案 2 :(得分:8)
答案 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