web-dev-qa-db-ja.com

2014 SP2 + CU4を適用した後のCDCキャプチャジョブの失敗/ CT​​テーブル列の変更

キャプチャジョブが失敗し、再起動しないというCDCの問題がありました。それはDEV環境にあったので害はありませんが、誰かがこれらのエラーを見たり、CDCで何がうまくいかなかったかを知っていますか?

SQL 2014 EE 12.0.5540-SSISDBを備えた2ノードAG

enter image description here

プロシージャまたは関数sp_batchinsert_1663605265に指定された引数が多すぎます。詳細については、sys.dm_cdc_errors動的管理ビューをクエリしてください。

ログスキャンプロセスは、ログシーケンス番号(LSN){00002d0d:0000f11f:0002}から複製されたコマンドを作成できませんでした。パブリケーションデータベースをバックアップし、カスタマーサポートサービスに連絡してください。詳細については

ログスキャンプロセスがログレコードの処理に失敗しました。現在のセッションの以前のエラーを参照して原因を特定し、関連する問題を修正してください。詳細については、sys.dm_cdc_errors動的管理ビューをクエリしてください。

sp_cdc_drop_job abd sp_cdc_add_jobを使用して、キャプチャジョブを削除して再作成しようとしました。他のノードへのフェイルオーバーとサーバー/サービスの再起動も試みました。 CDC自体を再起動させるものは何もないようです。

金曜日にAGローリングパッチを適用してCU4を適用したため、最新かつ最高の状態になっています。この問題は、パッチを適用してフェイルオーバーした直後に発生しました。

追加されたログクエリ結果

enter image description here

7

CU2 + SP4(12.0.5540)が、生成される基になる_CTシステムテーブルの構造を変更するようです。列[__$command_id] int nullが追加されます。

新しいCUにインプレースアップグレードすると、キャプチャジョブが失敗し始めるか、「再試行の間...」に進み、次のエラーが発生します。

enter image description hereenter image description hereenter image description here

キャプチャジョブの削除と再作成は機能しません(cdc_add_jobを使用)。キャプチャエージェントのCDCジョブを削除し、テーブルでCDC(sp_cdc_disable_table)を無効にしてから、CDC(sp_cdc_enable_table)を再度有効にする必要がありました。これにより、ジョブが再度追加され、ジョブが正常に実行され、収集が開始されます。

問題は、CDCを削除して再度有効にすると、既存の_CTテーブルとそのすべてのデータが失われることです。

CDCを変更するCU4について私が見つけた唯一の情報は、MSからの次のものです: https://support.Microsoft.com/en-us/help/3030352

注文の問題は修正されたと述べていますが、CDCシステムテーブルの構造的な変更は記載していません。

更新1:この問題に関して、MSと有料サポートケースをオープンしました。接続アイテムも開いています: https://connect.Microsoft.com/SQLServer/Feedback/Details/3130381

UPDATE 2:MSごとに、CU4へのパッチ適用後にコマンドsp_vupgrade_replicationを使用すると、キャプチャエージェントジョブを正常に開始できます。それでも、コマンドが実行される前に失敗したジョブには対処しません。また、どこにも文書化されていないこの追加された列は扱いません。まだ最終的な評決が何であるかを見るのを待っています。

更新3:MSが公式にブログに投稿し、これを問題として認識しました: https://blogs.msdn.Microsoft.com/sql_server_team/cdc-functionality-may-break-after-upgrading-to-the-latest-cu-for-sql-server-2012-2014-and-2016 /

CU4パッチを再リリースして、CDCジョブを再開したり、列の変更を正式に文書化したりするための手動の介入を必要としない場合、Wordはまだありません。

6