我试图恢复我的数据库的SQL Server备份文件,但它抛出一个错误如下:
备份集保存现有数据库以外的数据库的备份
我的数据库是SQL Server 2008,备份文件是2005年的。
会有什么问题呢?
我试图恢复我的数据库的SQL Server备份文件,但它抛出一个错误如下:
备份集保存现有数据库以外的数据库的备份
我的数据库是SQL Server 2008,备份文件是2005年的。
会有什么问题呢?
当前回答
我也遇到过这个问题。
解决方案:
不要创建一个空数据库并在其中恢复.bak文件。 使用“恢复数据库”选项,可通过右键单击SQL Server Management Studio的“数据库”分支,并提供数据库名称 提供要恢复的源。 如果另一个数据库仍然存在,也要在“Files”处更改文件名。否则你会得到“The file”…'不能被覆盖。它正在被数据库'yourFirstDb'使用”。
其他回答
在选项中,将“还原为”文件名称更改为新的数据库mdf和ldf。它引用源数据库的.mdf和.ldf文件。
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';
如果您正在使用脚本方法,并且有关于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文档中找到。
有些人把这个问题看得太复杂了。我发现这非常简单。
1)创建一个与你的.bak文件数据库名称相同的数据库
2)右键单击数据库| Tasks >恢复>数据库
3)在“还原源”下选择“从设备”
4)选择“。bak”文件
5)在下面的网格视图中选中数据库对应的复选框
6)在右侧的“选择页面”下选择“选项”
7)选中“保留复制设置(WITH KEEP_REPLICATION)”复选框
现在返回到General页面,单击OK恢复数据库…就是这样。
我也面临同样的问题,并通过这样做找到了解决方案,使用SSMS 2014
Just select the Option Overwrite the existing database(WITH REPLACE)