KB4530500 - 修正: CDC を無効にするために sp_cdc_disable_db が実行されたとき、または SQL Server の ROLLBACK SAVEPOINT の後に分散トランザクションがコミットされたときに、アサーション ダンプが発生する

適用先
SQL Server 2016 Service Pack 2 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows SQL Server 2019 on Windows

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft SQL Server で DTC_SUPPORT=PER_DB が構成されているAlways On可用性グループ (AG) のデータベースで変更データ Capture (CDC) を有効にするとします。
  • ストアド プロシージャ sp_cdc_disable_dbを実行して、AG 内のデータベースで CDC を無効にしようとします 。
  • この状況で、msdb.dbo.sp_delete_job を使用してクリーンアップ ジョブが既に完了している場合は、アサーション ダンプを受け取ることがあります 。
  • 別の状況では、 ROLLBACK SAVEPOINT の実行後に分散トランザクションまたはクロスデータベース トランザクションをコミットすると、アサーション ダンプが発生する可能性もあります。
  • 詳細については、「Always On 可用性グループの分散トランザクションを構成する」を参照してください。

DateTime spid1462s * *******************************************************************************
DateTime spid1462s *
DateTime spid1462s * スタック ダンプの開始:
DateTime spid1462s * DateTime spid 1462
DateTime spid1462s *
DateTime spid1462s * 場所: xactrm.cpp:LineNumber
DateTime spid1462s * Expression: !(m_activeDtcRMCount == 0) ||(m_preparedDtcXdesCount == m_xdesCount)

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。