1

私は SQL Server 2012 環境にいて、テーブルで CDC を有効にしています。つまり、テーブルはデータ ウェアハウスにデータを入力するために使用されます (基本的に、テーブルの内容は別の場所に複製されます)。

ただし、CDC がデフォルト設定の 3 日間で有効になっているため、大量のデータが失われていることに気付きました。NEW /DIFFERENT 保持期間で CDC を有効にするクエリを作成する方法を知っています。しかし、それはタスクではありません。タスクは、現在の CDC 設定を変更できる必要があることです。では、保持期間を変更する方法はありますか?

また、さらに、CDC が期限切れのレコードを完全に削除しないようにする方法はありますか? つまり、レコードがすでに転送/移動されていない限り、CDC がレコードを削除できないようにするフラグを実装する方法はありますか。

どうもありがとうございました!

4

2 に答える 2

1

sys.sp_cdc_change_jobは、保持を変更するために探しているものです。

2 番目の質問については、CDC が処理した行と処理していない行を知る方法はありません。そのため、ETL ジョブが最後に実行されてから蓄積されたレコードを処理するのに十分な時間を確保できるように、保持期間を設定する必要があります。CDC を使用する一般的なワークフローは、定期的に (毎日、毎週など) 実行されます。そのため、データが失われていると言うと、何か変なにおいがします (現在の保持期間が ETL の実行間隔よりも短く設定されている場合を除きます)。

于 2015-05-04T12:45:08.000 に答える
0

具体的には、次のコマンドを使用できます (上記の回答に従って)。

EXECUTE sys.sp_cdc_change_job
  N'cleanup',
  @retention = RetentionTimeInMin --this is a number in minutes 
于 2015-05-04T15:09:57.560 に答える