使用CDC捕获SQLSERVER数据变更

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

近期根据公司规划,需要将以前SQLSERVER数据库部分表中数据增量取到ORACLE数据库中,决定使用sqlserver2008中新增的CDC(变更数据捕获)功能来实现。

具体操作步骤如下:

1. 查看指定数据库有没有启用CDC功能 
SELECT is_cdc_enabled FROM sys.databases WHERE name = 'jointown' 
clip_image001

2. 在数据库级启用CDC功能 
EXEC sys.sp_cdc_enable_db 
clip_image002 
clip_image003

3. 创建一个测试表 
create table t1 (id int,name varchar(20));

4. 在测试表上启用CDC 
EXEC sys.sp_cdc_enable_table

@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 
clip_image005

执行时报错,需要在表中设置主键或唯一键

clip_image006 
再次启用成功: 
clip_image007

5. 提醒:若要CDC能正常工作,除了以上配置外,需要开启agent服务!

6. 检查指定表上CDC是否已经启用 
SELECT is_tracked_by_cdc FROM sys.tables WHERE name = 't1' and schema_id = SCHEMA_ID('dbo') 
clip_image009

7. 此时查看变更数据捕获表,根据之前建的表t1,对应的存放变更数据的表为cdc.dbo_t1_ct,表中暂无任何数据 
clip_image010

8. 在t1表中分别插入与更改一条数据后再查看 
insert into t1 values (1,'a');

select * from cdc.dbo_t1_ct 
clip_image012clip_image014 
在跟踪表中可以看到源表数据插入已被捕获,相比原表而言,cdc表中新增了五列,一般我们额外需要关注的主要是__$start_lsn与__$operation 这两列,前一列存放此操作对应的数据库lsn号,后一列存放当前操作类型,以下为__$operation列对应操作类型: 
1=delete, 
2=insert, 
3=update(旧值), 
4=update(新值)。

通过以上操作可以看到,配置CDC过程本身来说是比较简单的,可以很方便的在对应的CDC表中跟踪到原表所做的数据操作,有了这些跟踪的数据后相应的开发人员就可以很方便的将sqlserver中源库和表中的数据捕获后同步到对应的其它库中,相比原来2005的触发器的方式,在效率和方便性上有了极大的提高。





     本文转自ttzztt 51CTO博客,原文链接:http://blog.51cto.com/tianzt/933681,如需转载请自行联系原作者






相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
3月前
|
SQL 流计算
Flink CDC 1.12版本引入了对SQL Server的支持
【1月更文挑战第26天】【1月更文挑战第124篇】Flink CDC 1.12版本引入了对SQL Server的支持
33 1
|
6月前
|
存储
SQLServer分页获取数据的存储过程
SQLServer分页获取数据的存储过程
24 0
|
4月前
|
SQL 数据库 数据安全/隐私保护
SQL Server 数据操控,视图和索引
SQL Server 数据操控,视图和索引
99 0
|
4月前
|
SQL 关系型数据库 MySQL
使用Flink CDC从SQL Server同步数据到MySQL
使用Flink CDC从SQL Server同步数据到MySQL
155 1
|
1月前
|
SQL 关系型数据库 数据库
Flink CDC产品常见问题之SQLserver cdc 开启 cdc表没有记录如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
8月前
|
SQL 数据库 索引
SQL Server开启变更数据捕获(CDC)
SQL Server开启变更数据捕获(CDC)
|
4月前
|
SQL 关系型数据库 MySQL
这个错误可能是由于Flink CDC在处理MySQL和SQL Server之间的数据同步时遇到了问题
这个错误可能是由于Flink CDC在处理MySQL和SQL Server之间的数据同步时遇到了问题
73 1
|
4月前
|
SQL 存储 数据库
flink sqlserver cdc实时同步(含sqlserver安装配置等)
flink sqlserver cdc实时同步(含sqlserver安装配置等)
302 1
|
5月前
|
SQL 流计算
这个问题可能与Flink CDC SQL server2016和CDC2.4.1的工作原理有关
这个问题可能与Flink CDC SQL server2016和CDC2.4.1的工作原理有关
32 6
|
9月前
|
SQL 存储 数据库
flink sqlserver cdc实时同步(含sqlserver安装配置等)
超详细讲解flink sqlserver cdc实时同步(含sqlserver安装配置等)
508 0
flink sqlserver cdc实时同步(含sqlserver安装配置等)