次の方法で共有


sys.sp_cdc_cleanup_change_table (Transact-SQL)

指定された low_water_mark 値に基づいて、現在のデータベースの変更テーブルから行を削除します。このストアド プロシージャは、変更テーブルのクリーンアップ プロセスを直接管理する必要のあるユーザーを想定して用意されています。ただし、このプロシージャは、変更テーブルに含まれるデータのすべてのコンシューマに影響を及ぼすため、使用する際は注意が必要です。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sys.sp_cdc_cleanup_change_table 
  [ @capture_instance = ] 'capture_instance', 
  [ @low_water_mark = ] low_water_mark ,
  [ @threshold = ]'delete threshold'

引数

  • [ @capture_instance = ] 'capture_instance'
    変更テーブルに関連付けられたキャプチャ インスタンスの名前を指定します。capture_instance のデータ型は sysname で、既定値はありません。NULL 値は許可されません。

    capture_instance には、現在のデータベースに存在するキャプチャ インスタンスの名前を指定する必要があります。

  • [ @low_water_mark = ] low_water_mark
    capture instance の新しい低レベルのウォーターマークとして使用するログ シーケンス番号 (LSN) を指定します。low_water_mark のデータ型は binary(10) で、既定値はありません。

    値が NULL でない場合、cdc.lsn_time_mapping テーブルの現在のエントリの start_lsn 値として指定する必要があります。cdc.lsn_time_mapping の他のエントリが、新しい低レベルのウォーターマークで識別されたエントリと同じコミット時間を共有する場合、そのグループのエントリに関連付けられた最小 LSN が低レベルのウォーターマークとして選択されます。

    値に明示的に NULL を設定した場合は、capture instance の現在の low watermark を使用してクリーンアップ操作の上限が定義されます。

  • [ @threshold = ] 'delete threshold'
    クリーンアップ時に 1 つのステートメントを使用して削除できる最大削除エントリ数を指定します。delete_threshold のデータ型は bigint で、既定値は 5000 です。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

なし

説明

sys.sp_cdc_cleanup_change_table は次の操作を実行します。

  1. @low_water_mark パラメータが NULL でない場合、capture instance の start_lsn の値を新しい low watermark に設定します。

    注意

    新しい低レベルのウォーターマークは、ストアド プロシージャ呼び出しで指定されている低レベルのウォーターマークと異なる場合があります。cdc.lsn_time_mapping テーブルの他のエントリが同じコミット時間を共有する場合、そのグループのエントリで表される最小の start_lsn が、調整された低レベルのウォーターマークとして選択されます。@low_water_mark パラメータが NULL の場合や、現在の低レベルのウォーターマークが新しい低レベルのウォーターマークより大きい場合は、キャプチャ インスタンスの start_lsn 値は変更されずそのままです。

  2. 変更テーブル エントリが持つ __$start_lsn の値が低レベルのウォーターマークより小さい場合は、その変更テーブル エントリが削除されます。delete threshold を使用すると、1 つのトランザクションで削除される行の数を制限できます。エントリを正常に削除できなかったときはエラーがレポートされます。ただし、呼び出しに基づいて行われた、キャプチャ インスタンスの低レベルのウォーターマークへの変更には影響はありません。

sys.sp_cdc_cleanup_change_table は、次のような場合に使用します。

  • クリーンアップ エージェント ジョブで削除エラーがレポートされた場合

    管理者は、このストアド プロシージャを明示的に実行して、失敗した操作を再試行できます。特定のキャプチャ インスタンスのクリーンアップを再試行するには、@low_water_mark パラメータに NULL を指定して sys.sp_cdc_cleanup_change_table を実行します。

  • クリーンアップ エージェント ジョブで使用される保有期間に基づく単純なポリシーが適さない場合

    このストアド プロシージャは、単一のキャプチャ インスタンスに対してクリーンアップを実行します。このため、このストアド プロシージャを使用して、キャプチャ インスタンスごとにクリーンアップの規則が調整された、カスタムのクリーンアップ方法を構築することができます。

権限

db_owner 固定データベース ロールのメンバシップが必要です。