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

R.D*_*.D. 453 sql-server

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

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

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

可能是什么问题?

小智 768

我也遇到过这个问题.

方案:

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

  • 当错误发生时,SSMS很容易告诉我这一点 (93认同)
  • "*不要创建一个空的数据库并将.bak文件恢复到它*"的+1 ...是的,这解决了它.(但是为什么我不会在其他时候遇到同样的问题而得到这个问题?我们不是只在第一时间开始做那个预创建作为某些*其他*莫名其妙的错误消息的解决方法?:] ) (13认同)
  • 在还原数据库中,我转到文件,还原为,并放入唯一的文件名,因为它仍然具有数据和日志文件的原始名称. (2认同)
  • 如果另一个数据库仍然存在,也可以在"文件"中更改文件名.否则你得到"文件'......'不能被覆盖.数据库'yourFirstDb'正在使用它." (2认同)

Ama*_*ath 163

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

2)WITH REPLACE较旧的数据库冲突并使用Delete命令再次恢复.

查看链接以获取更多详细信息.

  • @Abhijeetchindhe哈哈..重新使用和礼貌.. :) (4认同)

Him*_*der 88

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

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

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

在此输入图像描述

而已


Smi*_*tel 50

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

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

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


小智 30

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';
Run Code Online (Sandbox Code Playgroud)


Ali*_*our 28

简单的3个步骤:

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

2-检查设备作为源并选择.bak文件

3-单击选项并检查以下三个复选标记:

  1. 检查 OverWrite现有数据库.
  2. 在恢复之前取消选中 tail-log backup
  3. check close与目标数据库的现有连接.
  4. 其他选项真的是可选的!


Ali*_*jad 27

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

第 1 步:使用您喜欢的名称创建一个数据库。(在我们的例子 AdventureWorks)

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

在此处输入图片说明

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

在此处输入图片说明

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

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


小智 23

因为原来的.mdf和.ldf文件Db位于也许c:\programFile\....,这个信息保存在备份中!

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

因此:

  • 在新服务器上创建一个空DB

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

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

完成!
希望能帮助到你!


imm*_*odi 16

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

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

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

希望它能帮到别人!


use*_*426 15

如果您使用脚本方法并且有关于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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

    -- 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
Run Code Online (Sandbox Code Playgroud)

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


小智 10

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


小智 9

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

  • 这是我遇到的问题,所以谢谢!(我不知道备份文件实际上是差异备份。)。检查方法如下:“RESTORE HEADERONLY FROM DISK = 'C:\myfile.bak'” 在结果中,BackupType 为 1 = 完整备份。备份类型 5 = 差异备份。 (2认同)

小智 9

system.data.sqlclient.sqlerror:备份集包含现有"Dbname"数据库以外的数据库的备份

我找到了灵魂

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

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

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

4)选择.bak文件

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

6)到DataBase:"在这里你可以输入新的数据库名称"(例如:DemoDB)

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

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

你甚至可以从这个链接获得帮助

希望它有助于理清你的问题......


小智 5

我也遇到同样的问题,对我来说解决方案是:

  1. 右键单击数据库。
  2. 选择任务,选择还原数据库。
  3. 单击左侧的选项。
  4. 选中第一个选项OverWrite现有数据库(WITH REPLACE)。
  5. 转到常规,选择源数据库和目标数据库。
  6. 单击确定,就这样