8

次の手順を使用して CDC を有効にしました。

exec sys.sp_cdc_enable_db;

exec sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'table_name',
@role_name = N'CDC_Access',
@supports_net_changes = 1;

System Tablesに CT テーブルが作成されていることがわかります。SQL Server エージェントがオンになっており、cdc.db_name_captureジョブが作成され、実行中であることがわかります。

ただし、table_nameテーブルにデータが取り込まれているにもかかわらず、CT テーブルには何も表示されません。更新中の同じデータベースでCDCが有効になっている他のテーブルがあり、CDCそれらのデータをキャプチャし、その特定のテーブル用に作成されたCTテーブルに保存しています。

他のテーブルがデータをキャプチャしているのに、この 1 つのテーブルがデータをキャプチャしていないのはなぜですか?

トランザクション ログが大きくなりすぎたことに関係している可能性があることをオンラインで読みましたが、まだ十分なドライブ容量が残っています (最大 2 TB の空き容量)。

この問題をデバッグするにはどうすればよいですか?

よろしくお願いします!:)

編集 1

の出力は次のとおりですexec sys.sp_cdc_help_change_data_capturesubscription_eventsは、私が問題を抱えているテーブルです。

ここに画像の説明を入力

編集 2

の出力は次のとおりですexec sys.sp_cdc_help_jobs;

ここに画像の説明を入力

編集 3

の出力は次のとおりですselect * from sys.dm_cdc_log_scan_sessions;

ここに画像の説明を入力

ここに出力がありますselect * from sys.dm_cdc_errors;

ここに画像の説明を入力

編集 4

実行select serverproperty('productversion')すると、次のバージョン番号が提供されます: 11.0.3401.0.

4

1 に答える 1

15

以下をせよ:

  1. キャプチャ ジョブを停止します。
  2. 走るEXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1; EXEC sp_replflush;
  3. これらのコマンドを実行したこのクエリ ウィンドウを閉じます。
  4. キャプチャ ジョブを開始します。
  5. sys.dm_cdc_errors テーブルで新しい行を確認し、変更が表示され始めているかどうかを確認します。
于 2014-05-19T20:52:28.880 に答える