处理SSIS 2008中的变更数据捕获
2009-06-16 10:30:13 来源:WEB开发网effective_date将由cdc.lsn_time_mapping表(稍后介绍)配置。它是更改源表的事务的日期和时间。
__$start_lsn是来自事务日志的日志序列编号。
__$seqval提供一个事务内所有更改的一个顺序。
__$operation具有下面其中一个值:1=delete,2=insert,3=update(在值之前),4=update(在值之后)。
__$update_mask是一个位掩码,这里每个更改的字段都设置成1。
启用CDC
CDC需要在数据库级别以及你想跟踪变更的表上启用。CDC提供为每张表一个存储过程。下面是为我们的多个数据库和客户表启用CDC的示例脚本:
use mssqltips
go
exec sys.sp_cdc_enable_db
exec sys.sp_cdc_enable_table
@source_schema = N'dbo'
,@source_name = N'customer'
,@role_name = N'cdc_admin'
,@capture_instance = N'customer_all'
,@supports_net_changes = 1
,@index_name = NULL
,@captured_column_list = NULL
,@filegroup_name = NULL
上述脚本的要点是:
存储过程sys.sp_cdc_enable_db为当前的数据库启用CDC。
存储过程sys.sp_cdc_enable_table为一张表启用CDC。
为role_name参数创建一个数据库角色;这个角色的成员调用CDC数据。
capture_instance参数用来确定CDC数据;你的每张表可以有两个参数。
设置supports_net_changes成1来获得单行中的累积变更。
如果该表没有主码,那么你必须指定一个唯一索引。
你可以指定字段列表来跟踪或者NULL来跟踪所有的字段。
你可以为CDC文件指定一个文件组或者NULL来使用默认的设置。
更多精彩
赞助商链接