MSSQL变更数据捕获(CDC)和 更改跟踪(Chang Tracking)介绍
Tags: CDCMSSQLSQL Server变更数据捕获更改跟踪(Chang Tracking)
一、 CDC简介
在2008版本之前,通常使用DML触发器监控对表数据库的变更,但是触发器的维护比较困难,性能也不高。2008推出了新功能 变更数据捕获(Change Data Capture,CDC)可以用捕获对表的DML操作,常用于ETL,同步至其他(类型)数据库。
当在一个表上启用CDC 时,SQL Server 会创建一个系统更改表,更改表包含元数据列及与被跟踪表相同的列。CDC 的数据源为 SQL Server 事务日志,在将DML应用于跟踪的源表时,捕获进程读取日志,将记录发生的更改记录到更改表中。系统还将提供一些变更数据查询函数,通过指定范围访问更改的数据,并以过滤结果集的形式返回。
对于启用CDC的表DDL操作不会被阻止,但新增列也不会被映射;如果是删除一列,目标库该表对应列将返回null值而不是被删除。可以为表创建另一个捕获实例映射新架构,每个表最多可以有2个跟踪实例。
二、 CDC实现过程
1. 启用CDC
例如我们的测试库名为CDC_DB
1 2 3 4 5 6 7 8 9 10 11 | -- 启用数据库CDC USE CDC_DB GO -- 自建SqlServer使用 EXECUTE sys.sp_cdc_enable_db; GO -- 阿里云rds使用 exec sp_rds_cdc_enable_db; GO --检查启用是否成功 SELECT name,is_cdc_enabled FROM sys.databases; |