1、CDC介绍
官网文档:什么是变更数据捕获 (CDC)? - SQL Server | Microsoft Learn
变更数据捕获(Change Data Capture ,简称 CDC)记录 SQL Server 表的插入、更新和删除活动。使用变更数据捕获可以更有效跟踪表对象DML历史操作,对 ETL 等数据转移也非常有用。
变更数据捕获适用版本:
SQL Server 2008 以上的 Enterprise Edition、Developer Edition 和 Evaluation Edition
变更数据捕获原理:
变更数据捕获的更改数据源为 SQL Server 事务日志。当对表启用变更数据捕获时,系统将生成一个与该表结构类似的副本。当对源表进行插入、更新和删除 时,在事务日志会记录相关操作信息。变更数据捕获代理使用异步进程读取事务日志,将相关操作结果应用到副本表(捕获实例表)中,这样就完成了对源表操作的记录跟踪。
其他用途:
CDC不单单用于同步数据,在数据记录上也有很大的作用,增删改查,修改时候会记录修改前修改后的值
2、开启CDC步骤
2.1、第一步: 数据库开启CDC功能
确保你的 SQL Server 版本支持 CDC。CDC 在不同版本的 SQL Server 中可用性可能有所不同,因此请确保你正在使用支持 CDC 功能的版本。
官网文档:sys.sp_cdc_enable_db (Transact-SQL) - SQL Server | Microsoft Learn
在目标数据库上启用 CDC。你可以使用下面的 T-SQL 语句来启用 CDC:
USE [Libby];
EXEC sys.sp_cdc_enable_db;
EXEC sys.sp_cdc_enable_db 是启用 SQL Server 的 CDC(Change Data Capture)功能的存储过程,执行该存储过程会在数据库中创建以下表格(表格在系统表中查看):
- cdc.captured_columns:保存启用 CDC 功能的表的列信息,包括列名、数据类型和是否为标识列等。
- cdc.change_tables:保存启用 CDC 功能的表的元数据信息,包括表名、模式名、CDC 表的名称和 CDC 表的架构等。
- cdc.ddl_history:保存对启用 CDC 功能的表所做的所有 DDL 更改的历史记录,包括更改类型、更改时间、更改用户和更改语句等。
- cdc.lsn_time_mapping:保存