562

I am trying to restore a SQL Server backup file for my database, but it is throwing an error as follow:

The backup set holds a backup of a database other than the existing

My database in SQL Server 2008 and the backup file is in 2005.

What can be the problem?

4

26 回答 26

903

我也遇到过这个问题。

解决方案 :

  • 不要创建空数据库并将.bak文件恢复到其中。
  • 使用通过右键单击 SQL Server Management Studio 的“数据库”分支可访问的“恢复数据库”选项,并在提供要恢复的源的同时提供数据库名称。
  • 如果其他数据库仍然存在,还要更改“文件”处的文件名。否则你会得到“文件'...'不能被覆盖。它正在被数据库'yourFirstDb'使用”。
于 2013-02-20T11:41:25.417 回答
203

任何一个:

1)WITH REPLACE在使用RESTORE命令时使用(如果使用 GUI,在选项 -> 覆盖现有数据库 ( WITH REPLACE) 下找到)。

2)使用命令Delete再次发生冲突并恢复的旧数据库。RESTORE

检查链接以获取更多详细信息。

于 2012-04-18T07:16:03.230 回答
103

首先创建一个同名的空白数据库。然后去恢复选项

在左侧窗格的选项下不要忘记选择

  • 覆盖现有数据库
  • 保留复制设置

在此处输入图像描述

而已

于 2014-05-15T08:29:30.187 回答
56

遇到同样的问题并通过这样做找到了解决方案,使用 SSMS 2014

- 只需选择选项覆盖现有数据库(替换)

现有数据库>任务>还原>数据库

于 2015-12-23T10:31:16.807 回答
41
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';
于 2015-05-08T14:53:24.233 回答
33

简单的3个步骤:

1-右键单击数据库→任务→还原→数据库

2- 检查Device为源并找到.bak(或压缩的 .bak)文件

3- 在左窗格中单击options并:

  • 选中覆盖现有数据库。
  • 取消选中在还原之前进行尾日志备份
  • 检查关闭与目标数据库的现有连接。

其他选项确实是可选的(当然也很重要)!

于 2017-10-11T08:19:46.510 回答
33

这总是由于版本不兼容造成的。请按照以下步骤解决:

第 1 步:使用您的首选名称创建数据库。(在我们的例子中是 AdventureWorks)

第2步:写点击数据库,然后点击任务>>恢复>>数据库...</p>

在此处输入图像描述

第 3 步:在恢复屏幕上转到选项的第三个选项。现在选中复选框“覆盖现有数据库(WITH REPLACE)”</p>

在此处输入图像描述

第四步:点击确定。它应该成功地恢复数据库。

注意:当您使用 REPLACE 恢复数据库时,它将覆盖旧数据库。

于 2020-01-15T13:05:11.000 回答
25

这是因为原始文件.mdf和文件位于可能,并且此信息保存在备份中!.ldfDbc:\programFile\....

如果您在安装所在的不同 SQL Server 上创建相同的数据库,c:\program Files (x86)\ ....则无法像往常一样还原。您需要重新定位.mdf.ldf文件的路径。

所以:

  • 在新服务器上创建一个空数据库

  • 右键单击空的 Db > 任务 > 还原 > 数据库 > 单击设备选择您的.bak文件 > 选择要还原到的 Db

  • 单击左侧的文件>选择“将所有文件重新定位到文件夹”
  • 单击左侧站点上的选项>单击覆盖

完毕!
希望能帮助到你!

于 2015-02-13T16:17:51.817 回答
25

如果您使用脚本方法并且遇到有关 LDF 和 MDF 文件的错误,您可以首先使用以下命令查询备份文件以获取备份集中文件的逻辑名称(和其他详细信息):

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

您将获得类似于以下的结果:

在此处输入图像描述

然后您可以在查询中使用这些逻辑名称:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

更多信息RESTORE FILELISTONLY 可以从 SQL Server 文档中找到

于 2017-05-05T07:11:22.597 回答
17

我今天遇到了类似的问题。尝试了上述所有解决方案,但没有奏效。所以在这里发布我的解决方案。

还原前不要忘记取消选中 Tail-long Backup

还原前不要忘记取消选中 Tail-long Backup

希望它也能帮助别人!

于 2015-04-07T04:15:39.683 回答
11

同样重要的是要确保您的数据库名称与您尝试恢复的备份中的数据库名称相匹配。如果不匹配,您将收到相同的错误。

于 2012-10-23T12:19:27.287 回答
11

system.data.sqlclient.sqlerror:备份集包含一个数据库的备份,而不是现有的“Dbname”数据库

我偶然发现了灵魂

  1. 不要创建具有相同名称或不同数据库名称的数据库!重要。

  2. 右键单击数据库| 任务 > 还原 > 数据库

  3. 在“还原源”下选择“从设备”

  4. 选择 .bak 文件

  5. 在下面的网格视图中选中数据库的复选框

  6. 到数据库:“在这里您可以键入新的数据库名称”(例如:DemoDB)

  7. 不要从下拉列表中选择现有数据库

  8. 现在单击确定按钮,它将创建一个新的数据库并从您的 .bak 文件中恢复所有数据。

您甚至可以从此链接获得帮助

希望对解决您的问题有所帮助...

于 2018-10-15T07:24:58.640 回答
10

Before doing anything else, confirm if your backup is Full or Differential. If you're trying to create a new database out of a differential backup, no matter what you do you will encounter the error.

于 2014-09-30T08:07:34.773 回答
5

我也有同样的问题。我的解决方案是:

  1. 右键单击数据库。
  2. 选择任务,选择恢复数据库。
  3. 单击左侧的选项。
  4. 检查第一个选项覆盖现有数据库(替换)。
  5. 转到常规,选择源和目标数据库。
  6. 点击确定,就是这样
于 2017-09-26T06:17:21.910 回答
4

你们中的一些人对此过于复杂。我发现这非常简单。

1) 创建一个与您的 .bak 文件数据库名称同名的数据库!重要

2)右键单击数据库| 任务 > 还原 > 数据库

3)在“恢复源”下选择“从设备”

4) 选择 .bak 文件

5)在下面的gridview中选中数据库的复选框

6)在右侧的“选择页面”下选择“选项”

7)选中标记为“保留复制设置(WITH KEEP_REPLICATION)的复选框

现在回到常规页面并单击确定以恢复数据库......就是这样。

于 2014-02-26T16:27:45.263 回答
4

我只是想解决这个问题。

从以管理员身份运行到在此处和其他地方找到的建议,我都尝试过;最后为我解决的问题是检查“文件”属性选项卡中的“重新定位文件”选项。

希望这对其他人有帮助。

于 2013-11-11T15:29:48.580 回答
3

我不得不在我的本地创建新的数据库进行测试,并且我从我的产品中得到了备份。我首先创建了数据库并尝试在新数据库之上运行 BAK,这为我产生了这个错误。我删除了数据库并将其恢复,同时在恢复屏幕本身中获取新的数据库名称。数据库是在还原时自动创建的。

于 2013-11-18T19:27:20.397 回答
2

我使用生成脚本通过替代方式完成了工作。这确实对我有用,因为由于相同的错误,备份-还原无助于解决问题。

于 2013-12-01T08:19:10.630 回答
2

在选项中,将“还原为”文件名更改为新的数据库 mdf 和 ldf。它引用源数据库 .mdf 和 .ldf 文件。

于 2015-10-13T07:21:44.993 回答
1

您可以恢复到新数据库,验证文件名语法,它将在日志文件中,新的 SQL 版本将是“_log”后缀

广告检查选项选项卡中的覆盖现有数据库标志

法比奥

于 2015-02-10T10:54:40.887 回答
1

这帮助我从系统驱动器导入备份文件

  1. 创建一个与您的 .bak 文件数据库名称同名(最好)的数据库
  2. 右键单击数据库 > 任务 > 还原 > 数据库
  3. 在“还原源”下选择“从设备”
  4. 选择 .bak 文件,从系统中选择路径
  5. 在下面的列表框中选中数据库的复选框
  6. 在右侧的“选择页面”下选择“选项”
  7. 选中标记为“保留复制设置(WITH KEEP_REPLICATION)的复选框
  8. 选中 Overwrite the existing database(WITH REPLACE) 复选框 现在返回 General 页面并单击 OK 以恢复数据库...
于 2019-12-25T14:04:15.370 回答
0

我试图将生产数据库还原到同一台服务器上的临时数据库。

在我的情况下唯一有效的是恢复到一个新的空白数据库。这很好用,没有尝试覆盖生产文件(如果您只是将生产备份文件恢复到现有的暂存数据库,就会这样做)。然后删除旧数据库并重命名 - 文件将保留新的临时名称,但在我的情况下这很好。

(或者先删除暂存数据库,然后您可以恢复到与暂存数据库同名的新数据库)

于 2015-04-22T01:20:28.553 回答
0

我确定这个问题与文件和文件夹权限有关。

于 2014-11-18T14:44:51.893 回答
0

通常处理 .bak 文件会让人头疼,更直接的方法是使用 sqldump 文件传输数据库。

  1. 生成要移动或复制的当前数据库的脚本。
  2. 而不是整个数据库,选择所有表。
  3. 从选项菜单中选择另存为脚本,然后单击高级按钮并设置以下配置(我正在起诉 MSSQL 2016): 在此处输入图像描述
  4. 现在,您要在哪里导入这些数据,创建一个新数据库,切换到这个新数据库(我的意思是将其设置为默认值)
  5. 最后运行脚本,所有的表和数据都将被导入。

祝你好运。

  1. 项目清单
于 2022-01-19T07:57:05.793 回答
0

而不是单击还原数据库单击 还原文件和文件组..

这在我的 sql server 上工作

于 2019-07-02T18:36:51.757 回答
0

我有同样的问题,但在PS上。我把它留在这里以防有人试图做同样的事情

Restore-SqlDatabase -ServerInstance "<your instance name>" -Database "<your db name>" -BackupFile "<backup file route>.bak" -ReplaceDatabase

记得使用Set-ExecutionPolicy Unrestricted -Force和导入import-module sqlps。完成后不要忘记将执行策略设置回受限。

于 2021-11-24T14:49:36.813 回答