SSIS 服务器维护作业错误

Vah*_*dSH 4 sql-server-agent ssis sql-server-2017

我在负责删除旧执行日志的维护作业的 sql server 2017 代理作业中收到以下错误消息:

Date        5/23/2018 12:18:45 AM
Log     Job History (SSIS Server Maintenance Job)

Step ID     1
Server      KARABL3
Job Name        SSIS Server Maintenance Job
Step Name       SSIS Server Operation Records Maintenance
Duration        00:02:34
Sql Severity    16
Sql Message ID  16916
Operator Emailed    
Operator Net sent   
Operator Paged  
Retries Attempted   3

Message
Executed as user: ##MS_SSISServerCleanupJobLogin##. A cursor with the name 'execution_cursor' does not exist. [SQLSTATE 34000] (Error 16916).  NOTE: The step was retried the requested number of times (3) without succeeding.  The step failed.
Run Code Online (Sandbox Code Playgroud)

一段时间后,当日志计数超过正常计数时,它会导致所有作业因超时而失败。在此处输入图片说明

Meg*_*est 5

这实际上是 SQL Server 2017 中引入的一个错误。

请参阅存储过程SSISDB.[internal].[cleanup_server_retention_window]

第 175 行有 DEALLOCATE execution_cursor

该语句需要END在 WHILE 循环语句之后移动一行。它应该与 一起执行DROP TABLE #deleted_ops,而不是与TRUNCATE...

虽然要删除的行数低于“批量大小”(1000),但“有问题”的 sproc 实际上运行正常,因为它永远不需要进入循环两次,但是如果您有很多执行要清理,或者刚刚减少你的保留期——然后它就碰壁了。