使用 WITH REPLACE 还原备份时出现错误 3154

Dan*_*vey 17 sql-server backup restore sql-server-2012

我的计算机上安装了 SQL 2012 SP1。我做了一个数据库的备份test.bak

我有一个test2同名的数据库,但数据发生了变化。

我想test.bak通过test2数据库恢复。

我总是收到错误:

错误 3154:备份集包含现有数据库以外的数据库的备份。

我试过:

  1. 我右键单击 test2 -> Restore database -> From device

    我选择test.bak并检查了With Replace但我收到错误。

  2. 然后我尝试右键单击 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……)。