处理SSIS 2008中的变更数据捕获
2009-06-16 10:30:13 来源:WEB开发网图一
上面控制流的要点是:
Init Log是一个执行SQL任务;它调用init_cdc_capture_log存储过程(上面描述过)并且把创建的cdc_capture_log一致值保存在一个程序包变量中。
Process Changes是一个数据流任务,它从CDC表中检索最新的变更并且把它们复制到我们的审计表中。
End Log是一个执行SQL任务,它调用end_cdc_capture_log存储过程(上面介绍过)来更新cdc_capture_log行。
Process Changes数据流执行如下:
图二
上面数据流的要点是:
Extract Customer Changes是一个OLE DB源,它执行存储过程extract_customer_capture_log来检索上次运行期的客户变更。
Count Inserts Updates and Deletes是一个脚本组件转换任务,它只计算变更数据中的插入、更新和删除次数。
Save Customer Changes to Custom Audit Table是一个OLE DB Destination,它用于把每个变更行插入到customer_audit表中。
extract_customer_capture_log存储过程显示如下:
create procedure dbo.extract_customer_capture_log
@cdc_capture_log_id int
as
begin
set nocount on;
declare
@begin_lsn binary(10)
, @end_lsn binary(10)
-- get the lsn range to process
select
@begin_lsn = min_lsn
, @end_lsn = max_lsn
from dbo.cdc_capture_log
where cdc_capture_log_id = @cdc_capture_log_id
-- extract and return the changes
select m.tran_end_time modified_ts, x.*
from cdc.fn_cdc_get_all_changes_customer_all(
@begin_lsn, @end_lsn, 'all'
) x
join cdc.lsn_time_mapping m
on m.start_lsn = x.__$start_lsn ;
end
赞助商链接