テーブルのchange-data-captureを有効にしてから、他の誰かがテーブルに列を追加した場合、キャプチャは影響を受けますか?元の列の更新は引き続き取得できますか?新しいコラムについては?
列が削除された場合はどうなりますか?
テーブルのchange-data-captureを有効にしてから、他の誰かがテーブルに列を追加した場合、キャプチャは影響を受けますか?元の列の更新は引き続き取得できますか?新しいコラムについては?
列が削除された場合はどうなりますか?
(私の同僚のスティーブからのこの回答ですが、彼はSOアカウントを持っていないので、投稿します...)
列を追加しても、CDCは変更されません...以前と同じ列セットで更新を引き続き受信します。
列をDELETEすると、CDCは引き続き変更をキャプチャしますが、削除された列の値は常にNULLになります。
列をALTERすると、CDCは引き続き変更をキャプチャしますが、変更された列の値は新しい列タイプになります。
MSDNのAboutChangeData Capture(SQL Server)から
追跡された列が削除された場合、後続の変更エントリの列にNULL値が提供されます。ただし、既存の列でデータ型が変更された場合、その変更は変更テーブルに伝播され、キャプチャメカニズムによって追跡対象の列にデータ損失が発生しないようにします。キャプチャプロセスは、追跡されたテーブルの列構造に対して検出された変更をcdc.ddl_historyテーブルにも送信します。ダウンストリームアプリケーションで行わなければならない可能性のある調整についてアラートを受け取りたい消費者は、ストアドプロシージャsys.sp_cdc_get_ddl_historyを使用します。通常、現在のキャプチャインスタンスは、関連するソーステーブルにDDLの変更が適用されても、その形状を維持し続けます。ただし、新しい列構造を反映するテーブルの2番目のキャプチャインスタンスを作成することは可能です。これにより、キャプチャプロセスは、同じソーステーブルに、2つの異なる列構造を持つ2つの異なる変更テーブルに変更を加えることができます。したがって、1つの変更テーブルは現在の運用プログラムにフィードし続けることができますが、2番目の変更テーブルは新しい列データを取り込もうとしている開発環境を推進できます。キャプチャメカニズムが両方の変更テーブルにタンデムでデータを入力できるようにすることは、変更データを失うことなく、一方から他方への移行を実行できることを意味します。これは、2つの変更データキャプチャのタイムラインが重なるたびに発生する可能性があります。遷移が実行されると、廃止されたキャプチャインスタンスを削除できます。注注単一のソーステーブルに同時に関連付けることができるキャプチャインスタンスの最大数は2です。」