处理SSIS 2008中的变更数据捕获
2009-06-16 10:30:13 来源:WEB开发网我们查询日志获得从上次运行SSIS程序包开始的max_lsn。如果我们找到从上次运行开始的行,那么我们调用CDC函数sys.fn.cdc_increment_lsn来增加LSN,否则我们调用CDC函数sys.fn_cdc_get_min_lsn来获得我们表中首次更改记录的LSN。
我们调用CDC函数sys.fn_cdc_get_max_lsn to来获得最高的LSN(例如最新事务的LSN)。我们获得当前运行中高达也包括这个LSN的CDC数据。
我们把新的一行插入到日志中并且返回一致值;我们需要这个一致值来更新这行。
end_cdc_capture_log存储过程更新了通过init_cdc_capture_log存储过程创建的行。它显示如下:
create procedure dbo.end_cdc_capture_log
@cdc_capture_log_id int
, @insert_count int
, @update_count int
, @delete_count int
as
begin
set nocount on;
update dbo.cdc_capture_log set
end_time = getdate()
, insert_count = @insert_count
, update_count = @update_count
, delete_count = @delete_count
, status_code = 1
where cdc_capture_log_id = @cdc_capture_log_id
end
上面存储过程的要点是:
cdc_capture_log_id是init_cdc_capture_log存储过程返回的值。
我们更新行的计数、结束时间并且把status_code设置成1。
创建SSIS程序包
我们将创建具有下面控制流的SSIS程序包:
更多精彩
赞助商链接