Добрый вечер, коллеги. Столкнулся с проблемой создания разностных (дифференциальных) бэкапов БД. Полный бэкап базы данных выполняется по расписанию каждую неделю в ночь с понедельника на воскресенье.
BACKUP DATABASE [MY_DATABASE_NAME]
TO DISK = N'D:\BACKUP\MY_DATABASE_NAME Full Database Backup.BAK'
WITH NOFORMAT, INIT, SKIP, NAME = N'MY_DATABASE_NAME Full Database Backup',
NOREWIND
Каждый день, вечером выполняется разностный бэкап этой же базы.
BACKUP DATABASE [MY_DATABASE_NAME]
TO DISK = N'D:\BACKUP\MY_DATABASE_NAME Diff Database Backup.BAK'
WITH NOFORMAT, INIT, SKIP, NAME = N'MY_DATABASE_NAME Diff Database Backup',
DIFFERENTIAL
Вскоре я заметил, что разностный бэкап выполняется только в тот же день, когда выполняется и полный бэкап. В другие дни в журнале выполнения работ просто записана ошибка:
Message
Executed as user: <UserName>. Cannot perform a differential backup for database
"MY_DATABASE_NAME", because a current database backup does not exist. Perform a full
database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option.
[SQLSTATE 42000] (Error 3035) BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000]
(Error 3013). The step failed.
Сразу возник вопрос: как это так, не было сделано полного бэкапа когда он был сделан по расписанию двумя днями ранее. Сначала я подумал что проблема в актуальности этого полного бэкапа. Если ее не указывать то по умолчанию задается параметр базы данных
media retention
, который как оказалось равен 0. Тогда я задал актуальность базы явно при полном бэкапе:
BACKUP DATABASE [MY_DATABASE_NAME]
TO DISK = N'D:\BACKUP\MY_DATABASE_NAME Full Database Backup.BAK'
WITH NOFORMAT, INIT, SKIP, NAME = N'MY_DATABASE_NAME Full Database Backup',
NOREWIND, RETAINDAYS = 7
Указал 7 дней, так как полный бэкап выполняется раз в неделю. Но и это не решило проблемы. Все та же ошибка.
Надеюсь на помощь сообщества. Спасибо.