维护计划向导生成无效脚本?

Álv*_*lez 5 sql-server ssms maintenance-plans sql-server-2014

我使用维护计划向导创建了一个计划。当我执行计划时,“维护清理任务”失败并显示以下错误消息:

执行查询“EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2016...”失败并出现以下错误:“执行扩展存储过程时出错:参数无效”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或者连接建立不正确。

生成的 T-SQL 是这样的(根据日志文件查看器):

EXECUTE master.dbo.xp_delete_file 0,N'''',N'''',N''2016-01-25T13:50:30''

GO
Run Code Online (Sandbox Code Playgroud)

请注意,所有单引号都加倍。

日志查看器或向导中是否存在错误实际上生成了无效的 T-SQL 代码?


刚刚意识到如果我删除重复引号并手动运行查询,我会收到“执行扩展存储过程时出错:无效参数”:

EXECUTE master.dbo.xp_delete_file 0,N'',N'',N'2016-01-25T13:50:30'

GO
Run Code Online (Sandbox Code Playgroud)

Álv*_*lez 10

master.dbo.xp_delete_file过程似乎没有记录,而且它似乎也是一个二进制过程(sp_helptext 'master.dbo.xp_delete_file'prints xpstar.dll),因此我们无法从源代码中找出参数。非官方消息来源表明这些是其论点:

  1. 文件类型= 0(备份文件)或 1(报告文件)。
  2. 文件夹路径= 要删除文件的文件夹。路径必须以反斜杠“\”结尾。
  3. 文件扩展名= 这可能是“BAK”或“TRN”或您通常使用的任何内容。
  4. 日期= 需要删除哪些文件的截止日期。
  5. Subfolder = 0 忽略子文件夹,1 删除子文件夹中的文件。

换句话说, command 缺少要删除的实际路径。如果我们转到“管理/维护计划”,右键单击我们的计划并选择“修改”,我们可以编辑单个任务。在这种情况下,“维护清理任务”缺少路径(向导似乎不会验证您是否输入了路径)。它应该是这样的:

维护清理任务