
Допустим, у меня есть ежедневная задача по обслуживанию, которая:
- Резервное копирование всех баз данных и затем
- удаляет резервные копии старше 3 дней.
Теперь предположим, что первое резервное копирование в первый день, начавшееся в 10:00, привело к появлению следующих файлов:
db1.bak 2012-01-01 10:04
db2.bak 2012-01-01 10:06
Теперь предположим, что на 4-й день первый шаг задачи обслуживания (резервное копирование баз данных) заканчивается в 10:05. Будет ли SQL Server
- удалить db1.bak и оставить db2.bak (было бы логично, но может оказаться неожиданным для пользователя) или
- сохранить оба или
- удалить оба?
решение1
План обслуживания удалит файлы резервных копий, используя время запуска задачи очистки, поскольку в это время генерируется SQL. Так что из трех вариантов, которые вы описали, первый случай — это то, что произойдет.
Я создал пример плана, который удаляет файлы старше 3 дней, и запустил задание. Из вывода журнала ниже вы можете увидеть, что задание было запущено в 12:25 5/7/2013 и удалило файлы старше 12:25 5/4/2013. Нижеприведенный T-SQL показывает примерную команду для генерации даты.
query:
select GETDATE()
select DATEADD(DAY, -3, GETDATE() )
results:
-----------------------
2013-05-07 12:51:52.073
(1 row(s) affected)
-----------------------
2013-05-04 12:51:52.073
(1 row(s) affected)
План обслуживания: MaintenancePlan Продолжительность: 00:00:02 Статус: Успешно. Подробности:
Резервное копирование базы данных при подключении к локальному серверу Базы данных: DBA Тип: Полное Добавить существующую Начало задачи: 2013-05-07T12:25:03. Окончание задачи: 2013-05-07T12:25:05. Успешно Команда: РЕЗЕРВНОЕ КОПИРОВАНИЕ БАЗЫ ДАННЫХ [DBA] НА ДИСК = N''N:\Apps\MSSQL10.INSTANCE\MSSQL\Backup\DBA_backup_2013_05_07_122503_6738713.bak'' WITH NOFORMAT, NOINIT, NAME = N''DBA_backup_2013_05_07_122503_6738713'', SKIP, REWIND, NOUNLOAD, STATS = 10
ИДТИ
Обслуживание Очистка при подключении к локальному серверу Очистка файлов резервной копии базы данных Возраст: старше 3 дней Начало задачи: 2013-05-07T12:25:05. Окончание задачи: 2013-05-07T12:25:05. Успешно Команда: EXECUTE master.dbo.xp_delete_file 0,N''N:\Apps\MSSQL10.INSTANCE\MSSQL\Backup'',N''BAK'',N''2013-05-04T12:25:05''
ИДТИ