我正在尝试编写一些SQL,它将删除超过7天的".7z"类型的文件.
这就是我所得到的不起作用:
DECLARE @DateString CHAR(8) SET @DateString = CONVERT(CHAR(8), DATEADD(d, -7, GETDATE()), 1) EXECUTE master.dbo.xp_delete_file 0, N'e:\Database Backups',N'7z', @DateString, 1
我也尝试将'1'更改为'0'.
这将返回"成功",但文件不会被删除.
我正在使用SQL Server 2005,Standard,w/SP2
有类似的问题,找到了各种答案.这是我发现的.
您无法使用xp_delete_file删除7z文件.这是一个未记录的扩展存储过程,它是SQL 2000的保留.它检查要删除的文件的第一行,以验证它是SQL备份文件还是SQL报告文件.它不会根据文件扩展名进行检查.从我收集到的预期用途是在维护计划中清理旧备份和计划报告.
这是一个基于Tomalak链接的示例,用于删除超过7天的备份文件.引起人们兴趣的是"sys"架构,文件夹路径中的尾部斜线,以及要查找的文件扩展名中没有任何点.SQL Server运行的用户还需要对该文件夹具有删除权限.
DECLARE @DeleteDate datetime SET @DeleteDate = DateAdd(day, -7, GetDate()) 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) @DeleteDate, -- date prior which to delete 1 -- subfolder flag (1 = include files in first subfolder level, 0 = not)
请注意,xp_delete_file在SP2中已中断,不适用于报告文件; 在[ http://support.microsoft.com/kb/938085]上有一个修补程序.我还没有用SP3测试它.
由于它没有文档,xp_delete_file可能会在SQL Server的未来版本中消失或更改.许多站点建议使用shell脚本来执行删除操作.
AFAIK xp_delete_file
仅删除SQL Server 2005识别的文件(备份文件,事务日志,...).也许你可以尝试这样的事情:
xp_cmdshell 'del'