SSIS包完成所有任务后更新SSISDB目录时出现超时错误
SSIS包执行后超时问题排查
环境
SQL Server 2016 13.0.7050.2
问题现象
我有一个SSIS包,通过Foreach Loop容器执行86个其他SSIS包。整个流程能成功完成所有任务,但约90%的情况下无法正常退出,会触发超时错误。我推测这是SSIS后台执行的执行后日志记录和清理操作超时导致,依据如下:
- 无论成功或失败,前期日志完全一致;失败时会多一条超时错误信息,且恰好是在整个包完成后90秒出现
- 错误来源显示为“Transact-SQL存储过程”,但所有SSIS包的XML中均未找到该名称的任务或命令
执行历史参考
- 流程正常时的历史记录:[正常执行状态日志截图]
- 流程异常时的历史记录:[超时错误状态日志截图]
核心疑问
- SSIS在包执行结束时执行了哪些操作会导致超时?
- 是否可以增加超时设置?这里指的不是连接管理器中的超时设置,而是控制SSIS更新SSISDB内部表时等待时长的设置(至少可通过调整该设置验证我的后处理超时推测)。
已排查操作
- 在所有OLE DB连接管理器的连接字符串中配置
CommandTimeout=0和MultipleActiveReslutSets=False,无效果(符合预期,用于排除包组件问题,锁定SSIS内部机制) - 单独执行每个子包均可正常运行,但不符合业务需求,该操作进一步验证问题源于SSIS内部后处理的资源争用,而非单个子包本身
额外疑问
该包是原有“截断并重新加载”86张表数据的包的替代版本,改为检测变更而非先删除所有数据。原有包为单个包含多个数据流任务的包,未出现此错误。是否值得将新流程改为单个包含多个数据流任务的包?(因不清楚SSIS后处理逻辑,暂时无法判断是否有效)
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

