Я использую SQL Server 2014, и это ситуация:
- У меня есть сервер A и сервер B.
- Ночной ETL обрабатывается на сервере А.
- После завершения процесса загрузки база данных X резервируется (с
CHECKSUM
иRESTORE VERIFYONLY
для обеспечения надежности), а затем отправляется на сервер B. - Сервер B получает
bak
файл и затем восстанавливает базу данных там.
Я хочу использовать стратегию дифференциального резервного копирования, чтобы:
Полное резервное копирование выполняется только в субботу,
т.е. полное резервное копирование на сервере A в субботу -> отправка на сервер B -> Восстановление полного резервного копирования на сервере BОстальные дни будут дифференциальным резервным копированием,
т. Е. Дифференциальным резервным копированием на сервере A -> отправка на сервер B -> восстановление дифференциального резервного копирования на сервере B
Я пытался, но я получил ошибку, говоря:
Журнал или дифференциальная резервная копия не могут быть восстановлены, потому что ни один файл не готов к перемотке.
Не уверен почему. Я проверил sys.database_files
на сервере A и сервере B, и я вижу, что differential_Base_LSN
и differential_base_GUID
то же самое. Где-нибудь еще проверить?
Кстати, на шаге 2 выше, когда я восстанавливаю резервную копию diff на сервере B, всегда ли мне нужно каждый раз восстанавливать как полную, так и дифференциальную резервную копию?
Я только восстановил дифференциальную резервную копию WITH RECOVERY
(и получил это сообщение об ошибке), потому что полная резервная копия была восстановлена уже накануне.
Чтобы уточнить: да, я хочу, чтобы БД на сервере B была читаемой между дифференциалами. Как я могу обойти это? Мой единственный вариант RESTORE FULL (WITH NORECOVERY)
+ RESTORE DIFF (WITH RECOVERY)
комбо-последовательность каждую ночь?
Любое руководство будет высоко ценится.
источник