我有一个每周在下班时间执行的维护计划。它总是报告成功,但旧的备份不会被删除。我不希望驱动器填满。
数据库服务器信息:SQL Server 标准版 9.00.3042.00
有一个“维护清理任务”设置为
“根据扩展名搜索文件夹并删除文件”
并且“在任务运行时根据文件的年龄删除文件”被选中并设置为 4 周。
我唯一能看到的是,我的每个备份都有自己的子文件夹,而且这不是递归的。我错过了什么吗?
另外:我已经看到了 SP2 之前的问题,但我正在运行 Service Pack 2。
我有一个每周在下班时间执行的维护计划。它总是报告成功,但旧的备份不会被删除。我不希望驱动器填满。
数据库服务器信息:SQL Server 标准版 9.00.3042.00
有一个“维护清理任务”设置为
“根据扩展名搜索文件夹并删除文件”
并且“在任务运行时根据文件的年龄删除文件”被选中并设置为 4 周。
我唯一能看到的是,我的每个备份都有自己的子文件夹,而且这不是递归的。我错过了什么吗?
另外:我已经看到了 SP2 之前的问题,但我正在运行 Service Pack 2。
如果您在子文件夹中进行备份,则必须指定要删除的确切子文件夹。
例如:
您可以通过选择“为每个数据库制作一个备份文件”之类的选项来进行备份,然后选中“为每个数据库创建子文件夹”复选框。(我使用德语版的 SQL Server,所以我现在自己将所有内容都翻译成英文)
指定的文件夹是H:\Backup,因此备份实际上将在文件夹H:\Backup\DatabaseName中创建。
如果您希望维护清理任务通过“在任务运行时根据文件的年龄删除文件”删除备份,则必须指定文件夹H:\Backup\DatabaseName,而不是H:\Backup !!!
这是我在开始使用 SQL Server 2005 时犯的错误 - 我在备份和清理这两个字段中放置了相同的文件夹。
我的理解是你只能包含第一级子文件夹。我假设您已经选中了该复选框。
您的备份是否比仅一层更深?
另一个想法是,您是否有一个单独的维护计划来运行以删除多个数据库的备份?我问这个的原因是因为我可以看到你必须这样做的方式是将它指向一个更高级别的文件夹,这意味着你的“包含第一级子文件夹”不够深。
我的设置方式是维护清理任务是我备份过程的一部分。因此,一旦特定数据库的备份完成,维护清理任务就会在相同的数据库备份文件上运行。这使我可以更具体地了解目录,因此我不会遇到目录结构太深的情况。因为我已经按照我想要的方式设置了标准,所以在我准备好以任何一种方式删除它们之前,项目不会被删除。
蒂姆
确保您的维护计划没有任何相关的错误。您可以在 SQL Server Management Studio 的 SQL Server Agent 区域下查看错误日志。如果在您的维护计划中出现错误,那么它可能在开始删除过时的备份之前就退出了。
另一个问题可能是维护计划的“工作流程”。
如果您的计划包含多个任务,则必须用箭头连接任务以定义它们运行的顺序。
可能的问题 #1:
你忘了用箭头连接它们。我刚刚测试过——作业运行时没有任何错误或警告,但它只执行第一个任务。
可能的问题 #2:
您以永远不会运行清理任务的方式定义了工作流。如果用箭头连接两个任务,您可以右键单击箭头并指定第二个任务是始终运行还是仅在第一个任务运行/未成功运行时运行(这会更改箭头的颜色,可能是红色/绿,蓝)。也许备份工作,然后清理永远不会运行,因为它只会在备份失败时运行?