SQL Server CDC(变更数据捕获) 实践笔记
创作时间:
作者:
@小白创作中心
SQL Server CDC(变更数据捕获) 实践笔记
引用
CSDN
1.
https://m.blog.csdn.net/yaoyan11ao11an/article/details/145698450
功能
记录数据变更
CDC能够记录SQL Server表的插入、更新和删除活动 =====》事务日志
要求
SQL Server 2008及以上版本的Enterprise Edition、Developer Edition和Evaluation Edition
前置条件
- 需要开启代理服务
- 磁盘要有足够的空间,保存日志文件
- 表必须要有主键或者是唯一索引
原理
生成表结构副本
事务日志中记录的相关操作信息会被CDC代理异步读取并应用到副本表
操作
1. 开启CDC,创建相关系统表和函数
- 保存CDC元数据信息
- 捕获的变更数据
- 查询CDC
-- 启用CDC功能
EXEC sys.sp_cdc_enable_db;
-- 判断当前数据库是否启用了CDC(如果返回1,表示已启用)
SELECT is_cdc_enabled FROM sys.databases WHERE name = 'cdc_test';
- 若启用CDC失败
USE [DB]
GO
sp_changedbowner sa
2. 选择跟踪表
-- schema_name 是表所属的架构(schema)的名称。
-- table_name 是要启用 CDC 跟踪的表的名称。
-- cdc_role 是 CDC 使用的角色的名称。如果没有指定角色名称,系统将创建一个默认角色。
EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'orders',
@role_name = 'cdc_role';
- 执行完成后,自动生成两个作业。tablename_capture & tablename_cleanup
3. 变更数据的接口
查询函数
- 检索日志 cdc.fn_cdc_get_all_changes_
- 查询开启cdc跟踪的表
SELECT name, is_tracked_by_cdc
FROM sys.tables
WHERE is_tracked_by_cdc = 1;
- 获取特定表的CDC配置信息
EXEC sys.sp_cdc_help_change_data_capture @source_schema = N'dbo', @source_name = N'table';
- CDC系统表
cdc.captured_columns - 禁用表的CDC功能
USE [db];
GO
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'tabletest',
@capture_instance = N'dbo_tabletest';
GO
- 对具体字段开启CDC
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'YourTableName',
@capture_instance = N'YourCaptureInstance',
@supports_net_changes = 1,
@captured_column_list = N'Column1, Column2'; -- 只跟踪Column1和Column2
- 获取数据库的cdc配置信息
EXEC sys.sp_cdc_help_change_data_capture
4. 获取最大日志序列号(LSN)
select sys.fn_cdc_get_max_lsn()
5. 两个作业
捕获作业: cdc.dbCC_capture
捕获变更数据清理作业:cdc.dbCC_cleanup
清理旧的变更数据
性能
影响较小
扩展性强
注意事项
- CDC不支持字段类型:image、text、ntext。
- 配置Mapping时,Timestamp、identity 这种数据库系统字段不支持手动操作,需在配置中移除。
- 配置Mapping时,表必须选择主键primary key。
- 存在外键等依赖关系的表,需注意其同步顺序。
- 启用CDC后,若cdc表发生了字段类型变化,或新增/删除字段,则会影响日志,需关闭后重新启用cdc。
- 当cdc表并非所有字段都启用cdc时,则配置Mapping要注意其字段需与captured_column_list中保持一致。
Keys
- 事务日志文件(.ldf)
- 逻辑日志(VLF)
- CDC作业
- CDC表
- LSN(Log Sequence Number)
- cdc.lsn_time_mapping
- cdc.ddl_history
附
CDC 要点简图
CDC接口
CDC & 发布订阅
热门推荐
古代赌场的风貌与影响
蝴蝶兰常见病虫害及防治技巧大全
室内还是室外?蝴蝶兰养殖环境全攻略
数据指标异常分析:从定义到实战的完整指南
一文搞懂IGBT
瞬间解锁汽车奥秘:车辆数据查询系统让你轻松获取超详细规格与性能解析!
Excel半折计算公式详解:从基础函数到高级应用
咳出绿痰能自愈吗?——揭秘绿痰背后的真相
地下室物业费收取标准及计算方法
喝碱性水有助生儿子?盘点碱性水的是是非非
如何进行有效的房产购买操作?这些注意事项请收好
全国首个!AI+教育=深度升级!
南极座——包含南天极
基于TSX的Vue3组件开发技能
崇祯皇帝的悲壮抉择
罗汉松养护全攻略:让你的植物健康茁壮成长!
如何知晓原油价格的跳动幅度?这种跳动幅度意味着什么?
舒血宁注射液
一个化疗周期为什么是21天?提早或推迟影响疗效吗?
化疗的周期是多久
十大男生伤感歌曲,网络男歌手唱伤感歌曲大全
鱼腥草有什么作用?这4类人尽量少吃,可能会影响健康!
房间配色技巧大公开,利用油漆配色打造独一无二的房间风格!
《哪吒 2》,三个阶层,三个家族,三个父亲。
房子外墙漏水怎样修补完善?修补时有哪些材料选择?
农村废弃物加工,成本低,市场广阔,新能源时代的返乡创业
如何识别合同中的潜在风险点?
中国的付款方式:设置微信支付和支付宝
大城“小”爱 | 寻找拯救“消失的它”
《七龙珠》魔人布欧篇战力前十分析:神秘悟饭能否跻身前三?