xp_delete_file不删除旧备份

时间:2014-02-02 02:09:57

标签: sql-server-2012 extended-procedures

此命令不会删除备份:

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代理对该文件夹具有权限。

4 个答案:

答案 0 :(得分:3)

你有没有尝试过:

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抱怨完全相同的问题。请注意它被关闭为“将不会修复”,特别感兴趣的应该是来自Microsoft的Terrence Nevins的官方声明:

  

存储过程从来没有打算由最终用户调用,并且您可能成功完成它的操作几乎为零。我快速浏览了我们正在使用的实现,它需要一些非常特殊的参数来完成一项非常具体的任务。   
  
  如果你确定你需要直接从存储过程访问文件系统,那么我想你需要在.net中自己编写。或者也许已经有供应商提供此服务。   
  
我们没有记录这个XP或由于很好的理由推广它的使用。最重要的是,他们可以从发布到发布“离开”。

答案 1 :(得分:2)

解决:代理和SQL服务器服务的用户都需要备份文件夹的读/写/删除权限。

答案 2 :(得分:0)

确保备份目录中有“完全控制”。不幸的是,如果没有正确的priv,运行xp_delete_file也不会返回错误,也不会在SQL Server代理日志文件中看到任何内容。

答案 3 :(得分:-1)

路径名必须以\结尾,且扩展名不得包含点。然后它会工作。