Я пытаюсь протестировать восстановление базы данных 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
Мы с OP выяснили это в интерактивном чате. Оказывается, у рассматриваемого файла резервной копии было несколько наборов резервных копий. Тот, который ему нужно было восстановить, не находился в позиции 1 и поэтому не соответствовал полной резервной копии, которую он восстановил изначально. Решением было добавить with file = n
(где n - позиция этого набора резервных копий в файле).