SQL Server 2008 R2备份计划不会删除维护计划中设置的X天以前的文件

我们有一个数据库维护计划,每晚对所有用户数据库进行完整备份。 备份设置为七天后过期,并备份到磁盘,文件扩展名为“bak”。

问题在于作业不会删除7天以前的任何备份集(备份事务日志的作业也是如此)。

所有正在备份的数据库都将其恢复模式设置为“完整”。

SQL Server代理正在以本地系统login,“SYSTEM”对这些备份被保存的文件夹拥有完全的权限。

这些作业在手动运行时不报告任何错误,并且日志文件中没有错误。

如果我创buildtesting维护计划来删除目录中的文本文件并运行生成的T-SQL,则该命令成功完成,但目录中的文本文件不会被删除。

EXECUTE master.dbo.xp_delete_file 0,N'D:\TEST',N'.txt' 

我知道这是一个权利问题,但一切看起来都不错。

有人有主意吗?

谢谢。

据我所知,你使用特殊的维护清理任务 ,或通过“执行T-SQL语句任务”在维护计划中删除它们? 尽pipe这不重要。

通过查看您的SQL语句,我认为它可能是文件扩展名:它应该没有点,只是扩展它自己。

我怀疑这是一个权限问题,因为您能够首先创build备份。 但是,检查SQLServerMSSQLUser$...组是否具有完全访问权限 – 这就是我在所有“备份”位置上的权限(如果在初始设置期间将该文件夹设置为默认备份目标,则应自动设置这些权限)。


AFAIK xp_delete_file没有logging,我没有在SQL书中find它的参考。 显然,SQL Server在删除它之前会检查它是什么文件 – 它只与自己的文件一起工作(为了防止错误的使用/安全性,我想)。 这里是格式和参数:

 EXECUTE master.sys.xp_delete_file 0, -- FileTypeSelected (0 = FileBackup, 1 = FileReport) N'D:\SQLbackups\', -- folder path (trailing slash) N'bak', -- file extension which needs to be deleted (no dot) N'2011-06-15T15:10:04', -- date prior which to delete 1 -- subfolder flag (1 = include files in first subfolder level, 0 = not) 

通过查看您的示例SQL语句,我看到不less差异:

  • 在第一个参数中,你有0(文件备份),但试图删除文本文件
  • 文件扩展名应该排除点
  • 你应该提供有效期限(比以前的文件将被删除)

链接: http : //sqlblog.com/blogs/andy_leonard/archive/2009/03/11/xp-delete-file.aspx

这只是一个镜头,但我被包括一个“。” 在创build维护计划时在文件扩展名框中。 检查是否有“.bak”而不是“bak”。