7

テーブルで CDC がまだ有効になっている間に、2 つの新しい列がソース テーブルに追加されました。CDC テーブルに新しい列を表示する必要がありますが、これを行うにはどのような手順を実行すればよいかわかりません。テーブルで CDC を無効にし、DB で CDC を無効にし、新しい列を cdc.captured_columns テーブルに追加し、CDC を有効にしました。しかし、今は CDC テーブルにデータがありません!

列がソース テーブルに追加された後に更新する必要がある CDC テーブルは他にありますか? これらは、System Tables フォルダーの下にあるすべての CDC テーブルです。

  • cdc.captured_columns <----- 新しい列を追加した場所
  • cdc.change_tables
  • cdc.dbo_myTable_CT <------ 変更データがキャプチャされたテーブル
  • cdc.ddl_history
  • cdc.index_columns
  • cdc.lsn_time_mapping
  • dbo.systranschemas
4

1 に答える 1

9

Tracking Changes in Your Enterprise Database を読むことをお勧めします。非常に詳細で深いです。他の非常に役立つ情報には、次のようなものがあります。

変更データ キャプチャが有効になっている間は、DDL の変更は制限されません。ただし、列が追加または削除されると、収集される変更データに影響を与える可能性があります。追跡された列が削除された場合、キャプチャ インスタンス内のそれ以降のすべてのエントリは、その列に対して NULL になります。列が追加された場合、キャプチャ インスタンスによって無視されます。つまり、キャプチャ インスタンスの形状は作成時に設定されます。

列の変更が必要な場合は、テーブルに対して別のキャプチャ インスタンスを作成し (テーブルごとに最大 2 つのキャプチャ インスタンスまで)、変更データのコンシューマーが新しいテーブル スキーマに移行できるようにすることができます

これは、スキーマのずれを考慮した非常に賢明でよく考えられた設計です (実際のオンライン展開では、すべての参加者がスキーマを同時に更新できるわけではありません)。多段階のアプローチ (DDL の展開、新しい CDC のキャプチャ、サブスクライバーのアップグレード、古い CDC キャプチャの削除) を使用することが唯一の実行可能なアプローチであり、これに従う必要があります。

于 2013-02-19T13:09:44.030 に答える