sys.sp_cdc_add_job (Transact-SQL)
現在のデータベースに、変更データ キャプチャ機能のクリーンアップ ジョブまたはキャプチャ ジョブを作成します。
構文
sys.sp_cdc_add_job [ @job_type = ] 'job_type'
[ , [ @start_job = ] start_job ]
[ , [ @maxtrans = ] max_trans ]
[ , [ @maxscans = ] max_scans ]
[ , [ @continuous = ] continuous ]
[ , [ @pollinginterval = ] polling_interval ]
[ , [ @retention ] = retention ]
[ , [ @threshold ] = 'delete_threshold' ]
引数
[ @job_type= ] 'job_type'
追加するジョブの種類を指定します。 job_type のデータ型は nvarchar(20) で、NULL 値は許可されません。 有効な入力値は 'capture' と 'cleanup' です。[ @start_job= ] start_job
ジョブの追加後、そのジョブを直ちに開始するかどうかを指定するフラグです。 start_job のデータ型は bit で、既定値は 1 です。[ @maxtrans ] = max_trans
各スキャン サイクルで処理する最大トランザクション数を指定します。 max_trans のデータ型は int で、既定値は 500 です。 指定する場合、値は正の整数にする必要があります。max_trans はキャプチャ ジョブでのみ有効です。
[ @maxscans ] **=**max_scans
ログからすべての行を抽出するために実行する最大スキャン サイクル数を指定します。 max_scans のデータ型は int で、既定値は 10 です。max_scan はキャプチャ ジョブでのみ有効です。
[ @continuous ] **=**continuous
キャプチャ ジョブを連続的に実行するか (1)、1 回だけ実行するか (0) を指定します。 continuous のデータ型は bit で、既定値は 1 です。continuous に 1 を指定した場合、sp_cdc_scan ジョブによってログがスキャンされ、最大 (max_trans * max_scans) のトランザクションが処理されます。 その後、polling_interval に指定された秒数待機してから、次のログ スキャンが開始されます。
continuous に 0 を指定した場合、sp_cdc_scan ジョブは、最大 max_scans 回のログ スキャンを実行し、各スキャンあたり最大 max_trans 件のトランザクションを処理した後に終了します。
continuous はキャプチャ ジョブでのみ有効です。
[ @pollinginterval ] **=**polling_interval
ログ スキャン サイクルの間隔を秒数で指定します。 polling_interval のデータ型は bigint で、既定値は 5 です。continuous を 1 に設定した場合、polling_interval はキャプチャ ジョブでのみ有効です。 指定する場合、値には負の数を指定できず、24 時間が上限になります。 値 0 を指定した場合、ログ スキャンの間に待機時間はありません。
[ @retention ] **=**retention
変更データ行が変更テーブルに保持される分数を指定します。 retention のデータ型は bigint で、既定値は 4320 (72 時間) です。 最大値は 52494800 (100 年) です。 指定する場合、値は正の整数にする必要があります。retention はクリーンアップ ジョブでのみ有効です。
[ @threshold = ] 'delete_threshold'
クリーンアップ時に 1 つのステートメントを使用して削除できる最大削除エントリ数を指定します delete_threshold のデータ型は bigint で、既定値は 5000 です。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
なし
説明
クリーンアップ ジョブは、データベースの最初のテーブルの変更データ キャプチャを有効にしたときに既定値を使って作成されます。 キャプチャ ジョブは、データベースの最初のテーブルの変更データ キャプチャを有効にしたとき、そのデータベースにトランザクション パブリケーションが存在しなかった場合に、既定値を使って作成されます。 トランザクション パブリケーションが存在する場合、トランザクション ログ リーダーを使ってキャプチャ メカニズムが実現されます。別個のキャプチャ ジョブは必要ありません (使用することもできません)。
クリーンアップ ジョブとキャプチャ ジョブは既定で作成されるため、このストアド プロシージャが必要となるのは、ジョブを明示的に削除した後で、再び作成する必要が生じた場合だけです。
ジョブの名前は、cdc.<database_name>_cleanup または cdc.<database_name>_capture になります。<database_name> は、現在のデータベースの名前を表します。 同じ名前のジョブが既に存在した場合、名前の後にピリオド (.) と一意の識別子が続きます。たとえば、cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52 のようになります。
クリーンアップ ジョブまたはキャプチャ ジョブの現在の構成を表示するには、sp_cdc_help_jobs を使用します。 ジョブの構成を変更するには sp_cdc_change_job を使用します。
権限
db_owner 固定データベース ロールのメンバーシップが必要です。
使用例
A. キャプチャ ジョブを作成する
次の例では、キャプチャ ジョブを作成します。 明示的に削除された既存のクリーンアップ ジョブを改めて作成するという状況を想定しています。 ジョブは既定値を使って作成されます。
USE AdventureWorks2012;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO
B. クリーンアップ ジョブを作成する
次の例では、AdventureWorks2012 データベースにクリーンアップ ジョブを作成します。 パラメーター @start\_job は 0 に、@retention は 5760 分 (96 時間) に設定します。 明示的に削除された既存のクリーンアップ ジョブを改めて作成するという状況を想定しています。
USE AdventureWorks2012;
GO
EXEC sys.sp_cdc_add_job
@job_type = N'cleanup'
,@start_job = 0
,@retention = 5760;
関連項目
参照
sys.sp_cdc_enable_table (Transact-SQL)