SqlServer CDC被捕捉表字段详解

SqlServer目前仅支持在2008及以上版本开启CDC(变更数据捕捉)功能。

CDC通过读取事务日志,记录DML操作的发生时间、操作类型以及受影响数据的变化,然后将这些数据记录到CDC自动创建的表中。可以通过CDC提供的存储过程来获取具体的变化明细。
可执行以下存储过程启用CDC:

// 先对数据库启用cdc
EXEC sys.sp_cdc_enable_db;

// 对表employee启用cdc
EXEC sys.sp_cdc_enable_table
	@source_schema = N'dbo',
	@source_name   = N'employee',
	@capture_instance = NULL,
	@supports_net_changes = 1,
	@role_name     = NULL;

执行成功后,CDC会自动创建用于跟踪数据库变更的若干辅助表。
cdc模式下自动创建的表一般命名为 dbo_TABLENAME_CT,比如表employee对应于自动创建的表为:dbo_employee_CT,该表记录了所有源于employee的变更事件。
另外,所有启用CDC的表,前面几个字段都是相同的,其余字段则与源表的列一一对应。公共的字段详细说明如下:

字段名字段类型说明
__$start_lsnbinary(10)提交与更改相关联的LSN,以保存变更的提交顺序,并且在同一个事务中提交的变更都拥有相同的LSN值。
__$seqvalbinary(10)在事务中对同一行的多个修改通过这个序列值来记录执行顺序。
__$operationint用于标识DML操作的类型,在将变更应用于目标库时会使用该标识。1=delete,2=insert,3=update(捕获字段记录的是更新前的值)仅当指定了行过滤选项‘all update old’才会应用, 4=update(捕获字段记录的是更新后的值)
__$update_maskvarbinary(128)位掩码,其位对应于为捕获实例标识的每个捕获列。当__$operation 为1或2时,所有位赋值为1,而当__$operation为3或4时,只有捕获列发生变更的对应位赋值为1。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值