sys.sp_cdc_change_job (Transact-SQL)

修改当前数据库中变更数据捕获清除或捕获作业的配置。 若要查看作业的当前配置,请查询 dbo.cdc_jobs 表,或者使用 sp_cdc_help_jobs

主题链接图标 Transact-SQL 语法约定

语法

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

参数

  • [ @job_type= ] 'job_type'
    要修改的作业类型。 job_type 的数据类型为 nvarchar(20),默认值为“capture”。 有效的输入为 'capture' 和 'cleanup'。

  • [ @maxtrans ] **=**max_trans
    每个扫描循环中要处理的最大事务数。 max_trans 的数据类型为 int,默认值为 NULL,指示未更改此参数。 如果指定值,则该值必须是一个正整数。

    max_trans 仅对捕获作业有效。

  • [ @maxscans ] **=**max_scans
    为了从日志中提取所有行而要执行的最大扫描循环次数。 max_scans 的数据类型为 int,默认值为 NULL,指示未更改此参数。

    max_scan 仅对捕获作业有效。

  • [ @continuous ] **=**continuous
    指示捕获作业是要连续运行 (1) 还是仅运行一次 (0)。 continuous 的数据类型为 bit,默认值为 NULL,指示未更改此参数。

    当 continuous = 1 时,sp_cdc_scan 作业将扫描日志并且最多可处理 (max_trans * max_scans) 个事务。 然后,在等待 polling_interval 中指定的秒数后将开始下一个日志扫描。

    当 continuous = 0 时,sp_cdc_scan 作业可最多执行 max_scans 次日志扫描,并在每次扫描期间可最多处理 max_trans 个事务,然后退出。

    如果 @continuous 从 1 改为 0,@pollinginterval 将自动设置为 0。 为 @pollinginterval 指定的非 0 值将被忽略。

    如果省略 @continuous 或将其显式设置为 NULL,并且将 @pollinginterval 显式设置为一个大于 0 的值,则 @continuous 会自动设置为 1。

    continuous 仅对捕获作业有效。

  • [ @pollinginterval ] **=**polling_interval
    日志扫描循环之间间隔的秒数。 polling_interval 的数据类型为 bigint,默认值为 NULL,指示未更改此参数。

    polling_interval 仅在 continuous 设置为 1 时对捕获作业有效。

  • [ @retention ] **=**retention
    更改行要在更改表中保留的分钟数。 retention 的数据类型为 bigint,默认值为 NULL,指示未更改此参数。 最大值为 52494800(100 年)。 如果指定值,则该值必须是一个正整数。

    retention 仅对清除作业有效。

  • [ @threshold= ] 'delete threshold'
    清除时可以使用一条语句删除的删除条目的最大数量。 delete threshold 的数据类型为 bigint,默认值为 NULL,指示未更改此参数。 delete threshold 仅对清除作业有效。

返回代码值

0(成功)或 1(失败)

结果集

注释

如果省略某个参数,则不会更新 dbo.cdc_jobs 表中的关联值。 如果将参数显式设置为 NULL,则视作省略此参数。

如果指定的参数对相应作业类型无效,则会导致该语句失败。

仅在使用 sp_cdc_stop_job 停止作业并使用 sp_cdc_start_job 重新启动该作业后,对该作业所做的更改才会生效。

权限

需要 db_owner 固定数据库角色的成员身份。

示例

A.更改捕获作业

下例更新 AdventureWorks2012 数据库中某个捕获作业的 @job\_type、@maxscans@maxtrans 参数。 省略了捕获作业的其他有效参数(@continuous 和 @pollinginterval);未修改它们的值。

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

B.更改清除作业

下例更新 AdventureWorks2012 数据库中的一个清除作业。 该示例指定了此作业类型的所有有效参数,@threshold 除外。 未修改 @threshold 的值。

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

请参阅

参考

dbo.cdc_jobs (Transact-SQL)

sys.sp_cdc_enable_table (Transact-SQL)

sys.sp_cdc_add_job (Transact-SQL)