現象
SQL Server 2016 Service Pack 3 (SP3)またはSQL Server 2017 累積更新プログラム 26 (CU26)を適用し、変更追跡クリーンアップ ストアドプロシージャ sp_flush_commit_table_on_demandまたはsp_flush_CT_internal_table_on_demandを実行した後、または変更追跡の自動クリーンアップが実行された場合は、次のエラー メッセージが表示されます。
Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line LineNumber
Error converting data type numeric to int.
さらに、次のエラーがエラー ログに記録SQL Server可能性があります。
DateTime spidNum Error: 22122, Severity: 16, State: 1.
DateTime spidNum Change Tracking autocleanup failed on side table of "table_name". If the failure persists, use sp_flush_CT_internal_table_on_demand to clean up expired records from its side table.
このエラーが発生した後、変更追跡の自動クリーンアップでは、サイド テーブルまたは syscommittab テーブルからエントリをクリーンアップできない。
原因
SQL Server 2016 SP3 および SQL Server 2017 CU26 では、新しいテーブルdbo が導入されました。MSchange_tracking_history、新しいストアド プロシージャ 、sys.sp_add_ct_historyを使用して、変更追跡クリーンアップの履歴を記録します。 このテーブルには、現在INT cleanup_version宣言されている列 、および が含まれる。 このsys.sp_add_ct_history ストアド プロシージャには、INT @cleanup_version宣言されている パラメーター があります。 変更追跡を使用するビジー状態のシステムでは、クリーンアップ バージョンが一定の間隔で INT の範囲を越える可能性があります。 次に、変更追跡クリーンアップが実行されると、このテーブルの INT 列に BIGINT 値を挿入します。 これにより、"現象" セクションで説明されているエラーが生成されます。
解決方法
この問題は、次の累積的な更新プログラムで修正SQL Server。
2017 年SQL Server累積的な更新プログラム 27
SQL Serverの新しい累積的な更新プログラムには、すべての修正プログラムと、以前の累積的な更新プログラムに含まれているすべてのセキュリティ修正プログラムが含まれています。 最新の累積的な更新プログラムを確認SQL Server。
オンデマンド修正プログラム情報:
この問題は、次のオンデマンド修正プログラムで修正SQL Server。
回避策
この問題が発生した場合は、2016 SP3 または 2017 CU26 をSQL Serverして、以前のビルドに戻SQL Serverします。 Microsoft は、この問題を積極的に調査中であり、この情報が利用可能な場合は、詳細と追加のガイダンスでこの記事を更新します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
参照情報
Microsoft がソフトウェア 更新プログラムの 説明に使用する用語について説明します。