0

此命令不删除备份:

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

4 回答 4

3

你试过了吗:

EXEC xp_delete_file 0,N'F:\path\cms\',N'bak',N'2014-01-30T21:08:04';
--- this slash may be important ---^ 

也就是说,您根本不应该使用此存储过程来清理您的备份文件夹。它没有记录且不受支持。看看这个 Connect item,它抱怨完全相同的问题,七年前的今天。请注意,它因“无法修复”而关闭,特别值得关注的是来自 Microsoft 的 Terrence Nevins 的官方声明:

存储过程从未打算由最终用户调用,并且您可以成功地让它按照您的意图进行操作的机会几乎为零。我快速浏览了我们正在使用的实现,它需要一些非常特殊的参数来完成一项非常具体的任务。

如果您确定确实需要直接从存储过程访问文件系统,那么我想您需要自己在.net 中编写它。或者也许已经有供应商提供此功能。

出于非常充分的理由,我们不会记录此 XP 或向任何人宣传它的使用。最重要的是,它们可以从一个版本到另一个版本“离开”。

于 2014-02-02T02:19:18.270 回答
2

已解决:agent 和 sql server 服务的用户都需要对备份文件夹具有读/写/删除权限。

于 2014-02-03T15:27:44.147 回答
0

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

于 2017-12-28T21:06:06.830 回答
-1

路径名必须以 \ 结尾,并且扩展名不能包含点。然后它将起作用。

于 2015-04-20T19:41:36.143 回答