处理SSIS 2008中的变更数据捕获
2009-06-16 10:30:13 来源:WEB开发网insert_count,update_count 和delete_count记录了每次我们运行SSIS程序包的总数。
当SSIS程序包成功完成时,status_code被设置1。
我们创建两个存储过程来保存日志:
· init_cdc_capture_log创建新的一行。
· end_cdc_capture_log更新某行。
init_cdc_capture_log在我们的SSIS程序包开始时调用。它显示如下:
create procedure dbo.init_cdc_capture_log
@capture_instance nvarchar(50)
as
begin
set nocount on;
declare
@begin_lsn binary(10)
, @end_lsn binary(10)
, @prev_max_lsn binary(10)
-- get the max LSN for the capture instance from
-- the last extract
select @prev_max_lsn = max(max_lsn)
from dbo.cdc_capture_log
where capture_instance = @capture_instance
-- if no row found in cdc_capture_log get the min lsn
-- for the capture instance
if @prev_max_lsn is null
set @begin_lsn = sys.fn_cdc_get_min_lsn(@capture_instance)
else
set @begin_lsn = sys.fn_cdc_increment_lsn(@prev_max_lsn)
-- get the max lsn
set @end_lsn = sys.fn_cdc_get_max_lsn()
insert into dbo.cdc_capture_log
(capture_instance,start_time,min_lsn,max_lsn)
values
(@capture_instance,getdate(),@begin_lsn,@end_lsn)
select cast(scope_identity() as int) cdc_capture_log_id
end
上面存储过程的要点是:
赞助商链接