SSIS 服务器维护作业错误

标签 ssis sql-server-agent 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.

一段时间后,当日志计数超过正常计数时,它会导致所有作业因超时而失败。 enter image description here

最佳答案

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

参见存储过程 SSISDB.[internal].[cleanup_server_retention_window] .

第 175 行有 DEALLOCATE execution_cursor
此语句需要向下移动一行,在 END 之后WHILE 循环语句。应该和DROP TABLE #deleted_ops一起执行,不与 TRUNCATE...
虽然要删除的行数低于“批量大小”(1000),但“有问题”的 sproc 实际上运行正常,因为它永远不需要进入循环两次,但是如果您有很多执行要清理,或者刚刚减少你的保留期——然后它就碰壁了。

关于SSIS 服务器维护作业错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50517509/

相关文章:

sql-server - 检测源中未映射到目标的新列并在 SSIS 中失败

ssis - 如何在 SSIS 包内的现有任务之间插入新的控制流任务?

sql - 在 SQL 中计算有限和?

具有相同条件的 SELECT 和 UPDATE 查询中的 SQL Server 不匹配行数

c# - SSIS脚本组件转换C#代码日期转换

sql-server - "Unexpected error from external database driver (1)."

c# - 如何正确地将错误消息从控制台返回到 SQL Server 代理

sql-server-2005 - 对象 'sysjobs'、数据库 'msdb'、架构 'dbo' 的 SELECT 权限被拒绝

visual-studio-2010 - 如何使用数据库项目管理 SQL Server 作业

sql - 动态 SQL : Create insert queries for tables having relations