SQL Server 源端同步模式说明
本文介绍 CloudCanal 在 SQL Server 数据源下的 动态 CDC 与 静态 CDC 同步模式,及其适用场景。
动态 CDC 模式
- 自动管理 CDC:源端执行 DDL(如新增列)时,自动重建并切换 CDC,无须手动干预。
- 高权限账号:需使用
db_owner
角色账号(动态管理 CDC 实例)。 - 单任务限制:订阅 DDL 时,同一张表只能被一个任务订阅。
静态 CDC 模式
DDL 限制:
- 当源端新增列时,DDL 语句(如新增列) 会自动同步,但 新列数据 无法捕获。若需捕获 新列数据,需要进行如下操作:
- 修改订阅,剔除对应表。
- 禁用并重建 CDC。信息
capture_instance 格式要求 db_schema_table_cc_static
-- 禁用表级 CDC
EXEC sys.sp_cdc_disable_table
@source_schema = 'dbo',
@source_name = 'table',
@capture_instance = 'db_schema_table_cc_static';
-- 启用表级 CDC
EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'table',
@role_name = NULL,
@capture_instance = 'db_schema_table_cc_static',
@supports_net_changes = 0;
``` - 修改订阅,新增对应表,并勾选 全量数据初始化。
低权限支持:运行账号仅需 CDC 表的
SELECT
权限。支持备库:可从只读备库同步数据,减轻主库压力。
多任务订阅:订阅 DDL 时,同一张表可被多个任务订阅多次。