我试图恢复我的数据库的SQL Server备份文件,但它抛出一个错误如下:
备份集保存现有数据库以外的数据库的备份
我的数据库是SQL Server 2008,备份文件是2005年的。
会有什么问题呢?
我试图恢复我的数据库的SQL Server备份文件,但它抛出一个错误如下:
备份集保存现有数据库以外的数据库的备份
我的数据库是SQL Server 2008,备份文件是2005年的。
会有什么问题呢?
当前回答
首先创建一个同名的空白数据库。然后选择恢复选项
在左侧窗格的选项下,不要忘记选择
覆盖现有数据库 保留复制设置
就是这样
其他回答
在执行其他操作之前,请确认备份是全量备份还是差动备份。如果您试图从差异备份中创建一个新数据库,那么无论您做什么,都会遇到错误。
有些人把这个问题看得太复杂了。我发现这非常简单。
1)创建一个与你的.bak文件数据库名称相同的数据库
2)右键单击数据库| Tasks >恢复>数据库
3)在“还原源”下选择“从设备”
4)选择“。bak”文件
5)在下面的网格视图中选中数据库对应的复选框
6)在右侧的“选择页面”下选择“选项”
7)选中“保留复制设置(WITH KEEP_REPLICATION)”复选框
现在返回到General页面,单击OK恢复数据库…就是这样。
而不是点击恢复数据库点击恢复文件和文件组..
这在我的SQL服务器上工作
同样重要的是,要确保您的数据库名称与您试图恢复的备份中的数据库名称相匹配。如果不匹配,则会得到相同的错误。
如果您正在使用脚本方法,并且有关于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
你会得到类似如下的结果:
然后你可以在查询中使用这些逻辑名称:
-- 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 filelist的更多信息可以从SQL Server文档中找到。