问题描述:
通过flink-cdc、flinkX等框架采集sqlServer 的DDL语句时,全量数据能够采集到(将旧数据以查询方式读取进来),后续对该表的增删改操作,都无法增量采集DDL语句
解决方案:
这个情况不是单个原因导致的,而是需要一步步排查
-
查询SqlServer数据库版本
SQL:SELECT @@VERSION
查询数据库版本,然后查看对应版本支不支持CDC -
查询当前用户权限,必须为 sysadmin 固定服务器角色的成员才允许对数据库启用CDC(变更数据捕获)功能
SQL:exec sp_helpsrvrolemember 'sysadmin'
-
查询数据库是否已经启用CDC(变更数据捕获)功能
SQL:select is_cdc_enabled, name from sys.databases where name = 'root'
(0:未启用;1:启用) -
对数据库数据库启用CDC(变更数据捕获)功能
SQL:USE root GO EXEC sys.sp_cdc_enable_db GO
重复第三步操作,确认数据库已经启用CDC(变更数据捕获)功能。
-
查询表是否已经启用CDC(变更数据捕获)功能
SQL:select name,is_tracked_by_cdc from sys.tables where name = 'test';
(0:未启用;1:启用) -
对表启用CDC(变更数据捕获)功能
SQL:EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'test', @role_name = NULL;
source_schema:表所在的schema名称
source_name:表名
role_name:访问控制角色名称,此处为null不设置访问控制
supports_net_changes:是否为捕获实例生成一个净更改函数,0:否;1:是 (建议不要显示赋值,让系统生成默认值)
重复第五步操作,确认表已经启用CDC(变更数据捕获)功能。
至此,表test
启动CDC(变更数据捕获)功能配置完成。
- 检查agent(SQL Server 代理 (MSSQLSERVER) )是否开启
查询sql:EXEC master.dbo.xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT'
Stopped:关闭
Running:开启
如果未开启可去找找教程,开启之后才能进行增量获取