sys.sp_cdc_change_job (Transact-SQL)

適用対象: SQL Server

現在のデータベースの変更データ キャプチャのクリーンアップジョブまたはキャプチャ ジョブの構成を変更します。 ジョブの現在の構成を表示するには、 dbo.cdc_jobs テーブルに対してクエリを実行するか、 sys.sp_cdc_help_jobsを使用します。

Transact-SQL 構文表記規則

構文

sys.sp_cdc_change_job [ [ @job_type = ] N'job_type' ]
    [ , [ @maxtrans = ] max_trans ]
    [ , [ @maxscans = ] max_scans ]
    [ , [ @continuous = ] continuous ]
    [ , [ @pollinginterval = ] polling_interval ]
    [ , [ @retention ] = retention ]
    [ @threshold = ] 'delete threshold'
[ ; ]

引数

[ @job_type = ] N'job_type'

変更するジョブの種類。 @job_typenvarchar(20) で、既定値は capture です。 有効な入力は capturecleanup です。

[ @maxtrans ] = max_trans

各スキャン サイクルで処理するトランザクションの最大数。 @maxtransint で、既定値は NULL で、このパラメーターに変更がないことを示します。 指定する場合、値は正の整数である必要があります。

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

[ @maxscans ] = max_scans

ログからすべての行を抽出するために実行する最大スキャン サイクル数を指定します。 @maxscansint で、既定値は NULL で、このパラメーターに変更がないことを示します。

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

[ @continuous ] = 連続

キャプチャ ジョブを継続的に実行するか (1)、1 回だけ実行するか (0) を示します。 @continuousbit で、既定値は NULL で、このパラメーターに変更がないことを示します。

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

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

  • @continuous1 から 0 に変更された場合、@pollingintervalは自動的に 0 に設定されます。 0以外の@pollingintervalに指定された値は無視されます。

  • @continuousを省略するか、明示的にNULLに設定し、@pollinginterval0より大きい値に明示的に設定されている場合、@continuousは自動的に1に設定されます。

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

[ @pollinginterval ] = polling_interval

ログ スキャン サイクル間の秒数。 @pollingintervalbigint で、既定値は NULL で、このパラメーターに変更がないことを示します。

@pollinginterval は、 @continuous1に設定されている場合にのみ、キャプチャ ジョブに対して有効です。

[ @retention ] = retention

変更行を変更する分数は、変更テーブルに保持されます。 @retentionbigint で、既定値は NULL で、このパラメーターに変更がないことを示します。 最大値は 52494800 (100 年) です。 指定する場合、値は正の整数である必要があります。

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

[ @threshold = ] '削除のしきい値'

クリーンアップ時に 1 つのステートメントを使用して削除できる削除エントリの最大数。 @thresholdbigint で、既定値は NULL で、このパラメーターに変更がないことを示します。 @threshold はクリーンアップ ジョブに対してのみ有効です。

リターン コードの値

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

結果セット

ありません。

解説

パラメーターを省略すると、 dbo.cdc_jobs テーブル内の関連付けられた値は更新されません。 NULLに明示的に設定されたパラメーターは、パラメーターを省略した場合と同様に扱われます。

ジョブの種類に無効なパラメーターを指定すると、ステートメントは失敗します。

ジョブに対する変更は、 sys.sp_cdc_stop_job を使用してジョブが停止され、 sys.sp_cdc_start_jobを使用して再起動されるまで有効になりません。

アクセス許可

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

A. キャプチャ ジョブを変更する

次の例では、AdventureWorks2022 データベース内のキャプチャ ジョブの@job_type@maxscans、および@maxtransパラメーターを更新します。 キャプチャ ジョブの他の有効なパラメーター ( @continuous@pollinginterval) は省略されます。それらの値は変更されません。

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_change_job
    @job_type = N'capture',
    @maxscans = 1000,
    @maxtrans = 15;
GO

B. クリーンアップ ジョブを変更する

次の例では、 AdventureWorks2022 データベースのクリーンアップ ジョブを更新します。 @thresholdを除く、このジョブ・タイプのすべての有効なパラメーターが指定されます。 @thresholdの値は変更されません。

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_change_job
    @job_type = N'cleanup',
    @retention = 2880;
GO