我正在尝试使用完整/差异方法测试将 SQL 数据库还原到与备份时不同的服务器。该数据库处于简单恢复模式,因为它是一个测试数据仓库。
我有一个大约 5 天前的完整备份以及今天的差异备份。
现在,当我尝试应用微分时,我收到以下消息:
RESTORE DATABASE PAS_DWH_ME
FROM DISK='C:\MTWSQL01_Differential_Database.bak'
WITH REPLACE
Msg 3154, Level 16, State 4, Line 1
The backup set holds a backup of a database other than the existing 'PAS_DWH_ME' database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
我最初尝试通过 SSMS,但它说了一些有关破坏 LSN 链的信息。Google 建议这是我们版本的 SSMS 的一个错误。
Google 建议解决此问题的方法是使用选项WITH REPLACE
,但我使用的是该子句。
更多信息:
restore headeronly from disk = 'C:\MTWSQL01_Full_Database.bak'
restore headeronly from disk = 'C:\MTWSQL01_Differential_Database.bak'
完整的 CheckpointLSN =1063466000005158400170
差异的 DatabaseBackupLSN =1063466000005158400170
答案1
楼主和我在一次互动聊天中搞清楚了这个问题。原来,这个备份文件有多个备份集。他需要恢复的那个备份集不在位置 1,因此与他最初恢复的完整备份不匹配。解决办法是添加一个with file = n
(其中 n 是该备份集在文件中的位置)。