sys.sp_cdc_add_job (Transact-SQL)

適用対象: SQL Server

変更データ キャプチャのクリーンアップジョブまたはキャプチャ ジョブを現在のデータベースに作成します。

Transact-SQL 構文表記規則

構文

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_typenvarchar(20) であり、 NULLすることはできません。 有効な入力は capturecleanup です。

[ @start_job = ] start_job

ジョブを追加した直後に開始する必要があるかどうかを示すフラグ。 @start_jobbit 既定値は 1 です。

[ @maxtrans ] = max_trans

各スキャン サイクルで処理するトランザクションの最大数。 @maxtransint 既定値は 500 です。 指定する場合、値は正の整数である必要があります。

@maxtrans は、キャプチャ ジョブに対してのみ有効です。

[ @maxscans ] = max_scans

ログからすべての行を抽出するために実行する最大スキャン サイクル数を指定します。 @maxscansint 既定値は 10 です。

@max_scan は、キャプチャ ジョブに対してのみ有効です。

[ @continuous ] = 連続

キャプチャ ジョブを継続的に実行するか (1)、1 回だけ実行するか (0) を示します。 @continuousbit 既定値は 1 です。

  • @continuous1されると、sys.sp_cdc_scan ジョブはログをスキャンし、最大 (@maxtrans * @maxscans) トランザクションを処理します。 次に、次のログ スキャンを開始する前に、 @pollinginterval で指定された秒数を待機します。

  • @continuous0されると、sp_cdc_scan ジョブはログの最大@maxscans スキャンを実行し、各スキャン中に最大@maxtransトランザクションを処理してから終了します。

@continuous は、キャプチャ ジョブに対してのみ有効です。

[ @pollinginterval ] = polling_interval

ログ スキャン サイクル間の秒数。 @pollingintervalbigint 既定値は 5 です。

@pollinginterval は、 @continuous1に設定されている場合にのみ、キャプチャ ジョブに対して有効です。 指定する場合、値は 0 以上 24 時間未満 (最大 86399 秒) である必要があります。 0の値が指定されている場合、ログ スキャンの間に待機はありません。

[ @retention ] = retention

変更データ行が変更テーブルに保持される時間 (分)。 @retentionbigint の既定値は 4320 (72 時間) です。 最大値は 52494800 (100 年) です。 指定する場合、値は正の整数である必要があります。

@retention はクリーンアップ ジョブに対してのみ有効です。

[ @threshold = ] 'delete_threshold'

クリーンアップ時に 1 つのステートメントを使用して削除できる最大削除エントリ数を指定します @thresholdbigint 既定値は 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_job0 に設定され、 @retention は 5760 分 (96 時間) に設定されます。 明示的に削除された既存のクリーンアップ ジョブを改めて作成するという状況を想定しています。

USE AdventureWorks2022;
GO

EXEC sys.sp_cdc_add_job
    @job_type = N'cleanup',
    @start_job = 0,
    @retention = 5760;