sys.sp_cdc_add_job (Transact-SQL)
在当前数据库中创建变更数据捕获清理或捕获作业。
语法
sys.sp_cdc_add_job [ @job_type = ] 'job_type'
[ , [ @start_job = ] start_job ]
[ , [ @maxtrans = ] max_trans ]
[ , [ @maxscans = ] max_scans ]
[ , [ @continuous = ] continuous ]
[ , [ @pollinginterval = ] polling_interval ]
[ , [ @retention ] = retention ]
[ , [ @threshold ] = 'delete_threshold' ]
参数
[ @job_type= ] 'job_type'
要添加的作业类型。job_type 的数据类型为 nvarchar(20),且不能为 NULL。有效的输入为 'capture' 和 'cleanup'。[ @start_job= ] start_job
用于指示添加作业后是否立即启动该作业的标志。start_job 的数据类型为 bit,默认值为 1。[ @maxtrans ] = max_trans
每个扫描循环可以处理的最多事务数。max_trans 的数据类型为 int,默认值为 500。如果指定值,则该值必须是一个正整数。max_trans 仅对捕获作业有效。
[ @maxscans ] **=**max_scans
为了从日志中提取所有行而要执行的最大扫描循环次数。max_scans 的数据类型为 int,默认值为 10。max_scan 仅对捕获作业有效。
[ @continuous ] **=**continuous
指示捕获作业是要连续运行 (1) 还是仅运行一次 (0)。continuous 的数据类型为 bit,其默认值为 1。当 continuous = 1 时,sp_cdc_scan 作业将扫描日志并且最多可处理 (max_trans * max_scans) 个事务。然后,在等待 polling_interval 中指定的秒数后将开始下一个日志扫描。
当 continuous = 0 时,sp_cdc_scan 作业可最多执行 max_scans 次日志扫描,并在每次扫描期间可最多处理 max_trans 个事务,然后退出。
continuous 仅对捕获作业有效。
[ @pollinginterval ] **=**polling_interval
日志扫描循环之间相隔的秒数。polling_interval 的数据类型为 bigint,默认值为 5。polling_interval 仅在 continuous 设置为 1 时对捕获作业有效。如果指定了此参数,则该值不能负数,且不能超过 24 小时。如果指定的值为 0,则不会在两次日志扫描之间等待。
[ @retention ] **=**retention
更改数据行将在更改表中保留的分钟数。retention 的数据类型为 bigint,默认值为 4320(72 小时)。最大值为 52494800(100 年)。如果指定值,则该值必须是一个正整数。retention 仅对清除作业有效。
[ @threshold = ] 'delete_threshold'
清除时可以使用一条语句删除的删除条目的最大数量。delete_threshold 的数据类型为 bigint,默认值为 5000。
返回代码值
0(成功)或 1(失败)
结果集
无
注释
当对数据库中的第一个表启用了变更数据捕获时,会使用默认值创建一个清理作业。当对数据库中的第一个表启用了变更数据捕获并且该数据库不存在事务发布时,会使用默认值创建一个捕获作业。如果存在事务发布,则可使用事务日志读取器来驱动捕获机制,此时既不需要也不允许独立的捕获作业。
因为清理和捕获作业是默认创建的,所以仅当显式删除某个作业并且必须重新创建它时才需要使用此存储过程。
作业的名称为 cdc.<数据库名称>_cleanup 或 cdc.<database_name>_capture,其中 <数据库名称> 是当前数据库的名称。如果具有同一名称的作业已经存在,则会在该名称后面依次追加一个句点 (.) 和一个唯一标识符,例如:cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52。
若要查看清除或捕获作业的当前配置,请使用 sp_cdc_help_jobs。若要更改作业的配置,请使用 sp_cdc_change_job。
权限
需要 db_owner 固定数据库角色的成员身份。
示例
A. 创建捕获作业
下例创建一个捕获作业。本例假定已显式删除了现有清理作业并且必须重新创建它。创建该作业时使用了默认值。
USE AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO
B. 创建清理作业
下例在 AdventureWorks2008R2 数据库中创建一个清理作业。参数 @start_job 设置为 0,@retention 设置为 5760 分钟(96 小时)。本例假定已显式删除了现有清理作业并且必须重新创建它。
USE AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job
@job_type = N'cleanup'
,@start_job = 0
,@retention = 5760;