sys.sp_cdc_change_job (Transact-SQL)
适用于:SQL Server
修改当前数据库中变更数据捕获清除或捕获作业的配置。 若要查看作业的当前配置,请查询 dbo.cdc_jobs 表或使用 sp_cdc_help_jobs。
语法
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_type 为 nvarchar (20) ,默认值为 capture
。 有效的输入为 capture
和 cleanup
。
[ @maxtrans ] = max_trans
每个扫描循环中要处理的最大事务数。 @maxtrans 为 int ,默认值为 NULL,这表示此参数没有更改。 如果指定值,则该值必须是一个正整数。
max_trans 仅对捕获作业有效。
[ @maxscans ] = max_scans
为了从日志中提取所有行而要执行的最大扫描循环次数。 @maxscans 为 int ,默认值为 NULL,这表示此参数没有更改。
max_scan 仅对捕获作业有效。
[ @continuous ] = 连续
指示捕获作业是连续运行 () 1
,还是 (0
) 只运行一次。 @continuous 为 位 ,默认值为 NULL,这表示此参数没有更改。
当 @continuous 为
1
时,sp_cdc_scan作业会扫描日志并处理最多 (@maxtrans * @maxscans
) 事务。 然后,它会等待 polling_interval 中指定的秒数,然后开始下一次日志扫描。当 @continuous 为
0
时,sp_cdc_scan
作业将执行最多 @maxscans 次日志扫描,在每次扫描期间处理最多 @maxtrans 个事务,然后退出。如果 @continuous 从
1
0
更改为 , 则@pollinginterval 会自动设置为0
。 忽略为 @pollinginterval 以外的0
值。如果 省略@continuous 或显式设置为 NULL,并且 @pollinginterval 显式设置为大于
0
的值, 则@continuous 会自动设置为1
。
@continuous 仅对捕获作业有效。
[ @pollinginterval ] = polling_interval
日志扫描周期之间的秒数。 @pollinginterval 为 bigint ,默认值为 NULL,这表示此参数没有更改。
仅当 @continuous 设置为 1
时,polling_interval才对捕获作业有效。
[ @retention ] = 保留期
更改行在更改表中保留的分钟数。 @retention 为 bigint ,默认值为 NULL,表示此参数没有更改。 最大值为 52494800
(100 年) 。 如果指定值,则该值必须是一个正整数。
@retention 仅对清理作业有效。
[ @threshold = ] 'delete threshold'
在清理时可以使用单个语句删除的最大删除条目数。 @threshold 为 bigint ,默认值为 NULL,这表示此参数没有更改。 @threshold 仅对清理作业有效。
返回代码值
0
(成功) 或 1
(失败) 。
结果集
无。
备注
如果省略参数,则 不会更新dbo.cdc_jobs 表中的关联值。 如果将参数显式设置为 NULL,则视作省略此参数。
指定对作业类型无效的参数会导致语句失败。
除非使用 sp_cdc_stop_job 停止作业并使用 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