此命令不会删除备份:
EXEC xp_delete_file 0,N'F:\path\cms',N'*.bak',N'2014-01-30T21:08:04'
也试过了
EXEC xp_delete_file 0,N'F:\path\cms',N'bak',N'2014-01-30T21:08:04'
和
EXEC xp_delete_file 0,N'F:\path\cms',N'.bak',N'2014-01-30T21:08:04'
SQL Server代理具有该文件夹的权限。
你试过了吗:
EXEC xp_delete_file 0,N'F:\path\cms\',N'bak',N'2014-01-30T21:08:04';
--- this slash may be important ---^
也就是说,您应该只是不使用此存储过程来清理备份文件夹。它没有文档,也没有支持。七年前到今天,看看this Connect item,它抱怨完全相同的问题。请注意,它将被关闭为“不会修复”,特别感兴趣的应该是微软的Terrence Nevins的官方声明:
存储过程从来没有打算由最终用户调用,并且您可能成功地执行它的操作几乎为零。我快速浏览了我们正在使用的实现,它需要一些非常特殊的参数来完成一项非常具体的任务。 如果你确定你需要直接从存储过程访问文件系统,那么我想你需要在.net中自己编写。或者也许已经有供应商提供此服务。 我们没有记录此XP或由于很好的理由推广其使用。最重要的是,他们可以从发布到发布“离开”。
解决:代理和SQL服务器服务的用户都需要对备份文件夹的读/写/删除权限。
确保备份目录中有“完全控制”。不幸的是,如果没有正确的priv,运行xp_delete_file也不会返回错误,也不会在SQL Server代理日志文件中看到任何内容。
路径名必须以\结尾,扩展名不得包含点。然后它会工作。