我们有一个维护计划,每晚午夜进行一次完整备份,每小时进行一次事务备份。
两者都在向导中选中了“删除超过 3 天的备份”
这是作业中的 SQL:
EXECUTE master.dbo.xp_sqlmaint N'-PlanID 8DBCD331-76C8-4736-87ED-FB840696AE63 -WriteHistory -VrfyBackup -BkUpMedia DISK -BkUpLog "T:\SQL Backups" -DelBkUps 3DAYS -CrBkSubDir -BkExt "TRN"'
完整备份似乎正在正确清理。但是,我看到事务日志要回溯数周,因此我们不得不手动进入并清理空间。
有什么理由会发生这种情况吗?权限?工作需要很长时间?
如果我没记错的话,那是 SQL Server 2000 中的一种错误。我个人并没有在我的维护计划中设置这个选项,我安排一个批处理文件在备份文件被备份到磁带后删除它们。也许这些会有所帮助:
http://support.microsoft.com/kb/303292
http://www.componentworkshop.com/blog/2009/07/01/sql-server-2005-maintenance-cleanup-task-does-not-delete-backup-files
http://www.sqlnewsgroups.net/group/microsoft.public.sqlserver.server/topic24757.aspx
当我通常看到这种情况时,这是由于维护计划中的一项工作失败。本质上,维护计划会在删除旧备份之前备份数据库。当它确实删除旧备份时,它会严格按时间执行。这意味着到时候它会删除一个完整备份,但在删除备份和下一个完整备份之间的那段时间里留下现在无用的 tranlog 备份。
几年前我写了这个脚本,它允许你删除备份集,你可以安排它在维护计划备份之前运行。
http://www.sqlservercentral.com/scripts/Maintenance+and+Management/30905/