LSN 是与 SQL Server 更改相关的信息“片段”。如果您没有 LSN,则可能是您的 CDC 未运行或配置不正确。 Debezium 消耗 LSN 进行复制,因此,您的 SQL Server 需要生成它。
一些方法:
- 您是否检查过您的表是否启用了 CDC?这将列出启用了 CDC 的表:
SELECT s.name AS Schema_Name, tb.name AS Table_Name
, tb.object_id, tb.type, tb.type_desc, tb.is_tracked_by_cdc
FROM sys.tables tb
INNER JOIN sys.schemas s on s.schema_id = tb.schema_id
WHERE tb.is_tracked_by_cdc = 1
- 您的 CDC 数据库已启用并正在运行? (看here)
检查是否enabled:
SELECT *
FROM sys.change_tracking_databases
WHERE database_id=DB_ID('MyDatabase')
并检查是否正在运行:
EXECUTE sys.sp_cdc_enable_db;
GO
- 您的 CDC 服务正在 SQL Server 上运行吗?看in docs
EXEC sys.sp_cdc_start_job;
GO
- 在 CDC 中启用表时,我遇到了一些角色名问题。对于我的情况,配置为
null
解决了我的问题(更多细节here)
EXEC sys.sp_cdc_enable_table
@source_schema=N'dbo',
@source_name=N'AD6010',
@capture_instance=N'ZZZZ_AD6010',
@role_name = NULL,
@filegroup_name=N'CDC_DATA',
@supports_net_changes=1
GO