假设我有一项日常维护任务:
- 备份所有数据库,然后
- 删除超过 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 天的文件并运行该作业。从下面的日志输出中,您可以看到该作业于 2013 年 5 月 7 日 12:25 运行,并删除了 2013 年 5 月 4 日 12:25 之前的文件。下面的 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''
去