2008-11-24 54 views
4

我有一个在下班时间每周执行的维护计划。它总是报告成功,但旧备份不会被删除。我不想让驱动器充满。为什么我的SQL Server 2005备份不被删除?

DB服务器信息:SQL Server标准版9.00.3042.00

有一个 “清除维护任务” 设置为

“搜索文件夹,删除文件基础上的延伸”

和“在任务运行时基于文件的年龄删除文件“被检查并设置为4周。

我唯一能看到的是我的备份每个都有自己的子文件夹,并且这不是递归的。我错过了什么吗?

另外:我已经看到了问题的预SP2,但我运行Service Pack 2

回答

2

如果您在子文件夹备份,您必须指定确切的子文件夹中删除。

例如:

您通过选择说的选项进行备份类似“让每个数据库一个备份文件”,并检查上面写着“为每个数据库创建子文件夹”复选框。 (我与SQL Server的德语版工作,所以我现在一切都翻译成英文,我自己)

指定的文件夹H:\备份,所以备份实际上会在文件夹^h创建:\备份\数据库名称

如果你想维护清除任务通过“删除基于在任务运行时文件的年龄文件”删除的备份,你必须指定文件夹H:\备份\数据库名,不H:\ Backup !!!

这是我在开始使用SQL Server 2005时犯的错误 - 我在两个字段Backup,Cleanup中放置了相同的文件夹。

+0

这接近我所看到的。我们在“H:\ Backups \ DatabaseName \”中备份,而我设置为清理的文件夹是H:\ Backups \。有没有更好的方法来做到这一点,而不是把所有事情备份到H:\ Backups \并让MP清楚了? – andyhky 2008-11-24 20:54:19

1

我的理解是,你只能包含子文件夹的第一级。我假设你已经选中了该复选框。

您的备份比只有一个级别更深吗?

另一个想法是,你有一个单一的维护计划,你运行删除多个数据库的备份?我问这个问题的原因是因为我看到你必须这样做的方式是将其指向一个高一级的文件夹,这意味着你的“包含第一级子文件夹”不够深。

我设置的方式是维护清理任务是我备份过程的一部分。因此,一旦针对特定数据库的备份完成,“维护清理任务”将在相同的数据库备份文件上运行。这允许我在目录上更具体,所以我不会遇到太深的目录结构。由于我按照自己的方式设置了条件,因此在准备好以任何方式删除条目之前,条目都不会被删除。

0

确保您的维护计划没有任何与之相关的错误。您可以检查SQL Server Management Studio中SQL Server代理区域下的错误日志。如果您的维护计划中存在错误,那么在开始删除过时的备份之前可能会退出。

0

另一个问题可能是维护计划的“工作流程”。

如果您的计划包含多个任务,您必须将任务与箭头连接起来以定义它们的运行顺序。

可能的问题#1:

你忘了他们用箭头连接。我刚刚测试过 - 作业运行时没有任何错误或警告,但它只执行第一个任务。

可能问题2:

你的方式,清理任务将不会运行定义的工作流。如果使用箭头连接两个任务,则可以右键单击箭头并指定第二个任务是始终运行还是仅当第一个任务运行成功时才运行(这会更改箭头的颜色,可能是红色/绿,蓝)。也许备份工作,然后清理从不运行,因为它只会在备份失败时运行?