この記事は、SQL Server のフェールオーバー後に SSISDB データベースを含む Always On 可用性グループが解決状態のままになっている問題を解決するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 3139534
現象
SSISDB データベースが Always On 可用性グループのメンバーであり、SSISDB からのパッケージが同期的に実行されている間に可用性グループがフェールオーバーされるとします。 このような状況では、パッケージの実行が完了するまで、可用性グループは (現在は以前の) プライマリ レプリカで解決状態のままになる可能性があります。
このシナリオでは、フェールオーバー操作は成功しますが、(新しい) セカンダリ レプリカの可用性グループは、パッケージの実行が完了するまで解決状態のままになります。 この間、SQL Server エラー ログには、次のようなメッセージが表示されます。
Always On 可用性グループの状態変更のために、非修飾トランザクションがデータベース SSISDB にロールバックされています。 ロールバックの推定完了: 0% このメッセージは情報提供だけを目的としています。 ユーザーによる操作は不要です。
セッションの状態を照会すると、ジョブの実行に使用されたセッションが KILLED/ROLLBACK 状態であることが示されます。 実行が完了した場合、次のようなエラーがトリガーされる可能性があります。
メッセージ 0、レベル 11、状態 0、行 6
現在のコマンドで重大なエラーが発生しました。 結果があれば、破棄する必要があります。
メッセージ 0、レベル 20、状態 0、行 6
現在のコマンドで重大なエラーが発生しました。 結果があれば、破棄する必要があります。
原因
この問題は、SSIS パッケージの実行に使用されるスレッドが、SQL Server セッションの強制終了に使用されるメカニズムの制御外にあるために発生します。 パッケージが同期的に実行されると、パッケージの実行が完了するまで SQL Server がセッションを終了することを妨げるループの実行が発生します。
回避策
この問題を回避するには、非同期的に実行するように SSIS パッケージを構成します。 非同期パッケージの実行は既定の動作です。