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

[ @start_job = ] start_job

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

[ @maxtrans ] = max_trans

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

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

[ @maxscans ] = max_scans

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

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

[ @continuous ] = 連続

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

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

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

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

[ @pollinginterval ] = polling_interval

ログ スキャン サイクル間の秒数。 @pollingintervalは bigint で、既定値は 5.

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

[ @retention ] = 保持

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

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

[ @threshold = ] 'delete_threshold'

クリーンアップ時に 1 つのステートメントを使用して削除できる最大削除エントリ数を指定します @thresholdは bigint で、既定値は 5000.

リターン コードの値

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

結果セット

ありません。

解説

データベースの最初のテーブルで変更データ キャプチャが有効になっている場合、既定値を使用して クリーンup ジョブが作成されます。 キャプチャ ジョブは、データベースの最初のテーブルの変更データ キャプチャを有効にしたとき、そのデータベースにトランザクション パブリケーションが存在しなかった場合に、既定値を使って作成されます。 トランザクション パブリケーションが存在する場合、トランザクション ログ リーダーを使用してキャプチャ メカニズムを駆動します。個別のキャプチャ ジョブは必要ありません。また、許可もされません。

クリーンアップ ジョブとキャプチャ ジョブは既定で作成されるため、このストアド プロシージャが必要となるのは、ジョブを明示的に削除した後で、再び作成する必要が生じた場合だけです。

ジョブの名前は、 cdc.<database_name>_cleanup または cdc.<database_name>_capture現在 <database_name> のデータベースの名前です。 同じ名前のジョブが既に存在する場合、名前の後にピリオド (.) の後に一意の識別子が追加されます。次に例を示します cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52

クリーンup ジョブまたはキャプチャ ジョブの現在の構成を表示するには、sp_cdc_help_jobsを使用します。 ジョブの構成を変更するには、sp_cdc_change_jobを使用します。

アクセス許可

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

A. キャプチャ ジョブを作成する

次の例では、キャプチャ ジョブを作成します。 明示的に削除された既存のクリーンアップ ジョブを改めて作成するという状況を想定しています。 ジョブは既定値を使って作成されます。

USE AdventureWorks2022;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

B. クリーンup ジョブを作成する

次の例では、AdventureWorks2022 データベースに クリーンup ジョブを作成します。 パラメーター @start_job が設定 0 され、 @retention が 5760 分 (96 時間) に設定されます。 明示的に削除された既存のクリーンアップ ジョブを改めて作成するという状況を想定しています。

USE AdventureWorks2022;
GO

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