WEB开发网
开发学院数据库MSSQL Server 处理SSIS 2008中的变更数据捕获 阅读

处理SSIS 2008中的变更数据捕获

 2009-06-16 10:30:13 来源:WEB开发网   
核心提示: 图一上面控制流的要点是:Init Log是一个执行SQL任务;它调用init_cdc_capture_log存储过程(上面描述过)并且把创建的cdc_capture_log一致值保存在一个程序包变量中,Process Changes是一个数据流任务,处理SSIS 2008中的变更数据捕获(

图一

上面控制流的要点是:

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数据流执行如下:

处理SSIS 2008中的变更数据捕获

图二

上面数据流的要点是:

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

上一页  1 2 3 4 5 6 

Tags:处理 SSIS 变更

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接