使用CDC捕获SQLSERVER数据变更
近期根据公司规划,需要将以前SQLSERVER数据库部分表中数据增量取到ORACLE数据库中,决定使用sqlserver2008中新增的CDC(变更数据捕获)功能来实现。 具体操作步骤如下: 1. 查看指定数据库有没有启用CDC功能 2. 在数据库级启用CDC功能 3. 创建一个测试表 4. 在测试表上启用CDC @source_schema = 'dbo', @source_name = 't1', @role_name = NULL, @capture_instance = NULL, @supports_net_changes = 1, @index_name = NULL, @captured_column_list = NULL, @filegroup_name = default 执行时报错,需要在表中设置主键或唯一键 再次启用成功: 5. 提醒:若要CDC能正常工作,除了以上配置外,需要开启agent服务! 6. 检查指定表上CDC是否已经启用 7. 此时查看变更数据捕获表,根据之前建的表t1,对应的存放变更数据的表为cdc.dbo_t1_ct,表中暂无任何数据 8. 在t1表中分别插入与更改一条数据后再查看 select * from cdc.dbo_t1_ct 在跟踪表中可以看到源表数据插入已被捕获,相比原表而言,cdc表中新增了五列,一般我们额外需要关注的主要是__$start_lsn与__$operation 这两列,前一列存放此操作对应的数据库lsn号,后一列存放当前操作类型,以下为__$operation列对应操作类型: 1=delete, 2=insert, 3=update(旧值), 4=update(新值)。 通过以上操作可以看到,配置CDC过程本身来说是比较简单的,可以很方便的在对应的CDC表中跟踪到原表所做的数据操作,有了这些跟踪的数据后相应的开发人员就可以很方便的将sqlserver中源库和表中的数据捕获后同步到对应的其它库中,相比原来2005的触发器的方式,在效率和方便性上有了极大的提高。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |