备份集包含除现有数据库之外的数据库的备份

时间:2012-04-18 07:02:41

标签: sql-server

我正在尝试为我的数据库恢复SQL Server备份文件,但它发出如下错误:

  

备份集包含现有

以外的数据库的备份

我在SQL Server 2008中的数据库和备份文件是在2005年。

可能是什么问题?

24 个答案:

答案 0 :(得分:721)

我也遇到过这个问题。

解决方案:

  • 不要创建空数据库并将.bak文件还原到它。
  • 通过右键单击SQL Server Management Studio的“数据库”分支,可以访问'还原数据库'选项,并提供数据库名称 提供恢复的来源。
  • 如果另一个数据库仍然存在,也可以在“文件”中更改文件名。否则你得到“文件'......'不能被覆盖。数据库'yourFirstDb'正在使用它。”

答案 1 :(得分:149)

1)使用WITH REPLACE命令时使用RESTORE

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

查看link了解详情。

答案 2 :(得分:83)

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

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

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

enter image description here

那是

答案 3 :(得分:47)

面临同样的问题并通过SSMS 2014实现了解决方案

- Just select the Option Overwrite the existing database(WITH REPLACE) 

Existing Database> Task> Restore> Database

答案 4 :(得分:26)

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';

答案 5 :(得分:21)

这是因为原始.mdf中的.ldfDb个文件位于c:\programFile\....,而且此信息会保存在备份中!

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

因此:

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

  • 右键单击空Db>任务>恢复>数据库>点击设备选择您的.bak文件>选择Db以恢复到

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

完成!
希望它有所帮助!

答案 6 :(得分:17)

简单的3个步骤:

1-右键单击数据库>任务>恢复>数据库

2-选中Device作为来源,找到 .bak 文件

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

  1. 检查覆盖现有数据库。
  2. 取消选中在恢复前进行尾部日志备份
  3. 检查关闭与目标数据库的现有连接。
  4. 其他选项实际上是可选的!

答案 7 :(得分:14)

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

  

不要忘记在恢复前取消选中Tail-long Backup

Don't forget to uncheck Tail-long Backup before restore

希望它也能帮助别人!

答案 8 :(得分:13)

这总是由于版本不兼容而导致。 请按照以下步骤解决:

第1步:使用您的首选名称创建一个数据库。 (在我们的情况下是AdventureWorks)

第2步:书写并单击数据库,然后单击任务>>还原>>数据库...

enter image description here

步骤3:在还原屏幕上,转到“选项”的第三选择。现在,选中“覆盖现有数据库(替换)”复选框

enter image description here

第4步:单击“确定”。它应该可以成功还原数据库。

注意:使用REPLACE还原数据库时,它将覆盖旧数据库。

答案 9 :(得分:9)

如果您使用脚本方法并且有关于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

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

enter image description here

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

    -- 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.mdf'; -- "DB_log" is LDF logical name from query above

有关RESTORE FILELISTONLY can be found from the SQL Server docs的更多信息。

答案 10 :(得分:8)

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

答案 11 :(得分:7)

  

system.data.sqlclient.sqlerror:备份集保存除现有“ Dbname”数据库以外的数据库的备份

我偶然发现了灵魂

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

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

  3. 在“还原源”下,选择“来自设备”

  4. 选择.bak文件

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

  6. 到数据库:“您可以在此处键入新数据库名称”(Ex:DemoDB)

  7. 不要从DropDownlist中选择现有数据库

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

you can get help from this link even

希望这将有助于您解决问题...

答案 12 :(得分:6)

在执行任何其他操作之前,请确认您的备份是完整备份还是差异备份。如果您尝试使用差异备份创建新数据库,则无论您执行什么操作,都会遇到错误。

答案 13 :(得分:3)

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

  1. 右键单击数据库。
  2. 选择任务,选择恢复数据库。
  3. 点击左侧的选项。
  4. 检查第一个选项OverWrite the existing database(WITH REPLACE)。
  5. 转到常规,选择源和目标数据库。
  6. 点击确定,就是这样

答案 14 :(得分:1)

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

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

2)右键单击数据库|任务>恢复>数据库

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

4)选择.bak文件

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

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

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

的复选框

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

答案 15 :(得分:1)

我使用生成脚本通过备用方式完成工作。这对我有用,因为Backup-Restore因同样的错误无法解决问题。

答案 16 :(得分:1)

在选项中,更改"还原为"文件名到新数据库mdf和ldf。它引用了源数据库.mdf和.ldf文件。

答案 17 :(得分:1)

我必须在我的本地创建一个新的数据库用于测试&我从我的产品中得到了支持。我首先创建了db并尝试在新db上运行BAK,这对我产生了这个错误。我删除了数据库并在恢复屏幕本身中获取新的数据库名称时将其恢复。在还原时自动创建数据库。

答案 18 :(得分:1)

我只是想解决这个问题。

我尝试了从管理员运行到此处和其他地方的建议;最后为我解决的是检查Files属性选项卡中的“重定位文件”选项。

希望这有助于其他人。

答案 19 :(得分:0)

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

答案 20 :(得分:0)

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

广告检查覆盖选项标签

中的现有数据库标记

的Fabio

答案 21 :(得分:0)

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

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

(或者先删除登台数据库,然后恢复到与登台数据库同名的新数据库)

答案 22 :(得分:0)

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

在我的sql服务器上有效

答案 23 :(得分:0)

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

  1. 创建一个与您的.bak文件数据库名称相同(最好)的数据库
  2. 右键单击数据库>任务>还原>数据库
  3. 在“还原源”下,选择“来自设备”
  4. 选择.bak文件,然后从系统中选择路径
  5. 在下面的列表框中选择数据库的复选框
  6. 在右侧“选择页面”下,选择“选项”
  7. 选中标有“保留复制设置(保留KEEP_REPLICATION)”的复选框
  8. 选中用于覆盖现有数据库的复选框(替换) 现在返回“常规”页面,然后单击“确定”以还原数据库...