AlwaysOn 可用性组包含 SSISDB 数据库中 SQL Server 故障切换后仍然处于"已解决"状态

症状

假设 SSISDB 数据库是 AlwaysOn 可用性组成员,而该可用性组发生故障转移,从 SSISDB 包执行同步时。在此情况下,可用性组可能还是处于"已解决"状态 (现在以前) 包执行完成之前的主副本。

在这种情况下,故障转移操作成功,但是 (新) 辅助副本上的可用性组包执行完成之前仍处于解析状态。在此期间,SQL Server 错误日志显示类似于以下内容的消息︰

不合法的事务正在回滚数据库 SSISDB 的 AlwaysOn 可用性组状态发生了变化。估计回滚已完成︰ 0%。这是信息性消息。不需要任何用户操作。


查询会话状态显示的用于执行作业的会话处于 KILLED/回滚状态。如果或当执行未能完成,则可能会触发错误如下所示︰

消息 0,级别 11,状态 0,第 6 行

当前命令发生了严重错误。应放弃任何可能产生的结果。

Msg 0、 20、 状态 0,第 6 行级别

当前命令发生了严重错误。应放弃任何可能产生的结果。

原因

因为用于执行 SSIS 包的线程控制的机制,用于停止 SQL Server 会话,将出现此问题。以同步方式执行包时,这样的循环,防止 SQL Server 终止会话完成包执行之前执行。

解决方法

若要变通解决此问题,请配置要异步执行的 SSIS 包。执行异步包是默认行为。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×