当前位置:  开发笔记 > 数据库 > 正文

SQL Server xp_delete_file不删除文件

如何解决《SQLServerxp_delete_file不删除文件》经验,为你挑选了2个好方法。

我正在尝试编写一些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



1> 小智..:

有类似的问题,找到了各种答案.这是我发现的.

您无法使用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脚本来执行删除操作.



2> Jorge Ferrei..:

AFAIK xp_delete_file仅删除SQL Server 2005识别的文件(备份文件,事务日志,...).也许你可以尝试这样的事情:

xp_cmdshell 'del '

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有