SQL-Server:备份集保存现有数据库以外的数据库的备份

我试图恢复我的数据库的SQL Server备份文件,但它抛出一个错误如下:

备份集保存现有数据库以外的数据库的备份

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

会有什么问题呢?

536093 次浏览

:

1)在使用RESTORE命令时使用WITH REPLACE(如果使用GUI,它会在Options ->下找到)。

2) Delete旧数据库,使用RESTORE命令重新恢复。

查看链接了解更多细节。

同样重要的是,要确保数据库名称匹配是您试图恢复的备份中的数据库名称。如果不匹配,则会得到相同的错误。

我也遇到过这个问题。

解决方案:

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

我只是想解决这个问题。

从以管理员身份运行到这里和其他地方找到的建议,我尝试了所有方法;为我解决这个问题的是在文件属性选项卡中检查“重新安置文件”选项。

希望这能帮助到其他人。

我必须在我的本地创建新的数据库进行测试;我从我的prod备份。我先创建了db,并尝试在新db上运行BAK,这为我产生了这个错误。我删除了db并恢复它,同时在恢复屏幕本身提供新的db名称。恢复时自动创建db。

我通过另一种方式完成工作,使用生成脚本。这对我来说确实有用,因为由于同样的错误,Backup-Restore没有帮助解决这个问题。

有些人把这个问题看得太复杂了。我发现这非常简单。

1)创建一个与你的.bak文件数据库名称相同的数据库

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

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

4)选择“。bak”文件

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

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

7)选中“保留复制设置(WITH KEEP_REPLICATION)”复选框

现在返回到General页面,单击OK恢复数据库…就是这样。

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

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

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

enter image description here

就是这样

在执行其他操作之前,请确认备份是全量备份还是差动备份。如果您试图从差异备份中创建一个新数据库,那么无论您做什么,都会遇到错误。

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

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

AD检查覆盖现有的数据库标志在选项卡

法比奥

这是因为.mdf.ldf文件从原来的Db可能位于c:\programFile\....,这个信息保存在备份!

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

因此:

  • 在新的Server上创建一个空DB

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

  • 选择“重新定位所有文件到文件夹”
  • 点击左边站点>的选项,点击覆盖
< p >完成了!< br > 希望能有所帮助!< / p >

我今天遇到了类似的问题。尝试了以上所有的解决方案,但都没有效果。把我的解写在这里。

在恢复之前,不要忘记取消选择尾长备份

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

希望它也能帮助到其他人!

我试图将一个生产数据库恢复到同一台服务器上的一个登台数据库。

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

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

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

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

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

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

现有数据库>Task>Restore>数据库 < / >

如果您正在使用脚本方法,并且关于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://learn.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.ldf'; -- "DB_log" is LDF logical name from query above

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

我也一样。我的解决方案是:

  1. 右键单击数据库。
  2. 选择任务,选择恢复数据库。
  3. 单击左侧的选项。
  4. 检查第一个选项覆盖现有数据库(WITH REPLACE)。
  5. 转到常规,选择源和目标数据库。
  6. 单击OK,就是这样

简单3步:

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

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

3-在左侧窗格单击options和:

  • 覆盖现有数据库。
  • 在恢复前进行尾日志备份
  • 关闭到目标数据库的连接。

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

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

我是来寻找灵魂的

  1. 不要使用相同或不同的数据库名称创建数据库!

  2. 右键单击数据库| Tasks >恢复>数据库

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

  4. 选择.bak文件

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

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

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

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

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

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

不要点击恢复数据库,而是点击恢复文件和文件组..

这在我的SQL服务器上工作

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

  1. 创建一个与.bak文件数据库名称相同(最好)的数据库
  2. 右键单击数据库> Tasks >恢复>数据库
  3. 在“还原源”下选择“从设备”
  4. 选择.bak文件,从系统中选择路径
  5. 在下面的列表框中选中数据库的复选框
  6. 在右侧的“选择页面”下选择“选项”
  7. 选中标记为“保留复制设置(WITH KEEP_REPLICATION)”的复选框
  8. 选中“覆盖现有数据库(WITH REPLACE)”复选框 现在返回到General页面,单击OK恢复数据库…

此原因通常是由于版本不兼容。 按以下步骤解决:

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

步骤2:写单击数据库,然后单击Tasks >> Restore >> database…

enter image description here

第三步:在恢复界面进入第三个选项选择。现在选择“覆盖现有数据库(WITH REPLACE)”复选框

enter image description here

步骤4:单击“确定”。它应该能够成功地恢复数据库。

注意:当你用REPLACE恢复一个数据库时,它会覆盖旧的数据库。

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

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

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

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

  1. 生成要移动或复制的当前数据库的脚本。
  2. 而不是整个数据库,选择所有表格。
  3. 从选项菜单中选择另存为脚本,然后单击advance按钮并设置以下配置(我正在起诉MSSQL 2016): 李# EYZ0 < / >
  4. 现在,在你想导入这些数据的地方,创建一个新数据库,切换到这个新数据库(我的意思是设置为默认值)
  5. 最后运行脚本,将导入所有表和数据。

祝你好运。

  1. 列表项