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