Dan*_*vey 17 sql-server backup restore sql-server-2012
我的计算机上安装了 SQL 2012 SP1。我做了一个数据库的备份test.bak。
我有一个test2同名的数据库,但数据发生了变化。
我想test.bak通过test2数据库恢复。
我总是收到错误:
错误 3154:备份集包含现有数据库以外的数据库的备份。
我试过:
我右键单击 test2 -> Restore database -> From device
我选择test.bak并检查了With Replace但我收到错误。
然后我尝试右键单击 test2 -> Restore file and filegroups
我选择test.bak并检查了With Replace但我收到错误。
我可以删除旧数据库,然后使用正确的名称恢复备份,但是当我使用 SQL 2008 时,恢复现有数据库没有问题。
好像是因为我用的是SQL2012,所以经常出现这个错误!
Aar*_*and 13
您应该使用WITH REPLACE并且通常避免使用 Management Studio 中的点击式东西 - 它们不灵活并且经常有错误。
这对我有用:
USE [master];
GO
CREATE DATABASE test;
GO
CREATE DATABASE test2;
GO
BACKUP DATABASE test TO DISK = 'c:\temp\test.bak' WITH INIT, COMPRESSION;
GO
RESTORE DATABASE test2
FROM DISK = 'c:\temp\test.bak'
WITH REPLACE,
MOVE 'test' TO 'c:\temp\test2.mdf',
MOVE 'test_log' TO 'c:\temp\test2.ldf';
Run Code Online (Sandbox Code Playgroud)
此外,您应该确保在备份您使用的数据库WITH INIT和/或不要将设备指向已经包含备份的文件(因为它可能与您现在备份的数据库不同 - 特别是如果您重用名称,例如test……)。