我正在尝试为我的数据库恢复 SQL Server 备份文件,但它抛出如下错误:
备份集保存现有数据库以外的数据库的备份
我的数据库在 SQL Server 2008 中,备份文件在 2005 年。
可能是什么问题?
WITH MOVE
遇到了这个问题,并通过使用 WITH REPLACE, MOVE
解决了这个问题。
我也遇到过这个问题。
解决方案 :
不要创建空数据库并将 .bak 文件还原到其中。
使用通过右键单击 SQL Server Management Studio 的“数据库”分支可访问的“恢复数据库”选项,并在提供要恢复的源的同时提供数据库名称。
如果其他数据库仍然存在,还要更改“文件”处的文件名。否则你会得到“文件'...'不能被覆盖。它正在被数据库'yourFirstDb'使用”。
任何一个:
1) 在使用 RESTORE
命令时使用 WITH REPLACE
(如果使用 GUI,它位于选项 -> 覆盖现有数据库 (WITH REPLACE
) 下)。
2) Delete
发生冲突的旧数据库并使用 RESTORE
命令再次恢复。
查看 link 了解更多详情。
首先创建一个同名的空白数据库。然后去恢复选项
在左侧窗格的选项下不要忘记选择
覆盖现有数据库
保留复制设置
https://i.stack.imgur.com/ffoG7.png
而已
遇到同样的问题并通过这样做找到了解决方案,使用 SSMS 2014
- Just select the Option Overwrite the existing database(WITH REPLACE)
https://i.stack.imgur.com/XRhmL.png
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';
这总是由于版本不兼容造成的。请按照以下步骤解决:
第 1 步:使用您的首选名称创建数据库。 (在我们的例子中是 AdventureWorks)
第 2 步:写入单击数据库,然后单击任务 >> 恢复 >> 数据库...
https://i.stack.imgur.com/IkIND.jpg
第 3 步:在恢复屏幕上转到选项的第三个选项。现在选择复选框“覆盖现有数据库(替换)”
https://i.stack.imgur.com/HywOw.jpg
第四步:点击确定。它应该成功地恢复数据库。
注意:当您使用 REPLACE 恢复数据库时,它将覆盖旧数据库。
简单的3个步骤:
1-右键单击数据库→任务→还原→数据库
2- 检查 Device
作为源并找到 .bak(或压缩的 .bak)文件
3- 在左窗格中单击 options
并:
选中覆盖现有数据库。
取消选中在还原之前进行尾日志备份
检查关闭与目标数据库的现有连接。
其他选项确实是可选的(当然也很重要)!
如果您使用脚本方法并且遇到有关 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
您将获得类似于以下的结果:
https://i.stack.imgur.com/VlzQ1.png
然后您可以在查询中使用这些逻辑名称:
-- 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
can be found from the SQL Server docs 的更多信息。
这是因为原始 Db
中的 .mdf
和 .ldf
文件可能位于 c:\programFile\....
并且此信息保存在备份中!
如果您在安装在 c:\program Files (x86)\ ....
上的不同 SQL Server 上创建相同的数据库,则您无法像往常一样恢复。您需要重新定位 .mdf
和 .ldf
文件的路径。
所以:
在新服务器上创建一个空数据库
右键单击空的 Db > 任务 > 还原 > 数据库 > 单击设备选择您的 .bak 文件 > 选择要还原到的 Db
单击左侧的文件>选择“将所有文件重新定位到文件夹”
单击左侧站点上的选项>单击覆盖
完毕!希望能帮助到你!
我今天遇到了类似的问题。尝试了上述所有解决方案,但没有奏效。所以在这里发布我的解决方案。
还原前不要忘记取消选中 Tail-long Backup
https://i.stack.imgur.com/rsGsf.jpg
希望它也能帮助别人!
同样重要的是要确保您的数据库名称与您尝试恢复的备份中的数据库名称相匹配。如果不匹配,您将收到相同的错误。
system.data.sqlclient.sqlerror:备份集包含一个数据库的备份,而不是现有的“Dbname”数据库
我偶然发现了灵魂
不要创建具有相同名称或不同数据库名称的数据库!重要。右键单击数据库|任务 > 还原 > 数据库 在“还原源”下选择“从设备”选择 .bak 文件 在“到数据库”下方的网格视图中选中数据库复选框:“在此处您可以键入新数据库名称”(例如:DemoDB)不要t 从 DropDownlist 中选择 Existing Database 现在单击 Ok 按钮,它将创建一个新的数据库并从您的 .bak 文件中恢复所有数据。
you can get help from this link even
希望对解决您的问题有所帮助...
在执行任何其他操作之前,请确认您的备份是完整备份还是差异备份。如果您尝试从差异备份中创建新数据库,那么无论您做什么都会遇到错误。
我也有同样的问题。我的解决方案是:
右键单击数据库。选择任务,选择恢复数据库。单击左侧的选项。检查第一个选项覆盖现有数据库(替换)。转到常规,选择源和目标数据库。点击确定,就是这样
我只是想解决这个问题。
从以管理员身份运行到在此处和其他地方找到的建议,我都尝试过;最后为我解决的问题是检查“文件”属性选项卡中的“重新定位文件”选项。
希望这对其他人有帮助。
你们中的一些人对此过于复杂。我发现这非常简单。
1) 创建一个与您的 .bak 文件数据库名称同名的数据库!重要
2)右键单击数据库|任务 > 还原 > 数据库
3)在“恢复源”下选择“从设备”
4) 选择 .bak 文件
5)在下面的gridview中选中数据库的复选框
6)在右侧的“选择页面”下选择“选项”
7)选中标记为“保留复制设置(WITH KEEP_REPLICATION)的复选框
现在回到常规页面并单击确定以恢复数据库......就是这样。
我不得不在我的本地创建新的数据库进行测试,并且我从我的产品中得到了备份。我首先创建了数据库并尝试在新数据库之上运行 BAK,这为我产生了这个错误。我删除了数据库并将其恢复,同时在恢复屏幕本身中获取新的数据库名称。数据库是在还原时自动创建的。
我使用生成脚本通过替代方式完成了工作。这确实对我有用,因为由于相同的错误,备份-还原无助于解决问题。
在选项中,将“还原为”文件名更改为新的数据库 mdf 和 ldf。它引用源数据库 .mdf 和 .ldf 文件。
您可以恢复到新数据库,验证文件名语法,它将在日志文件中,新的 SQL 版本将是“_log”后缀
广告检查选项选项卡中的覆盖现有数据库标志
法比奥
这帮助我从系统驱动器导入备份文件
创建一个与您的 .bak 文件数据库名称同名(最好)的数据库 右键单击数据库 > 任务 > 还原 > 数据库 在“还原源”下选择“从设备”选择 .bak 文件,从系统中选择路径 选择下方列表框中的数据库复选框 在右侧的“选择页面”下 选择“选项” 选中标记为“保留复制设置(WITH KEEP_REPLICATION)”的复选框 选中“立即覆盖现有数据库(WITH REPLACE)”复选框回到General页面,点击OK恢复数据库...
我确定这个问题与文件和文件夹权限有关。
我试图将生产数据库还原到同一台服务器上的临时数据库。
在我的情况下唯一有效的是恢复到一个新的空白数据库。这很好用,没有尝试覆盖生产文件(如果您只是将生产备份文件恢复到现有的暂存数据库,就会这样做)。然后删除旧数据库并重命名 - 文件将保留新的临时名称,但在我的情况下这很好。
(或者先删除暂存数据库,然后您可以恢复到与暂存数据库同名的新数据库)
而不是单击还原数据库单击还原文件和文件组..
这在我的 sql server 上工作
我有同样的问题,但在 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 文件传输数据库。
生成要移动或复制的当前数据库的脚本。而不是整个数据库,选择所有表。从选项菜单中选择另存为脚本,然后单击高级按钮并设置以下配置(我正在起诉 MSSQL 2016):现在,您要在其中导入这些数据,创建一个新数据库,切换到这个新数据库(我的意思是将其设置为默认值)最后运行脚本,将导入所有表和数据。
祝你好运。
项目清单
不定期副业成功案例分享