debezium:数据库中没有记录最大lsn;请确保sql server代理正在运行

n53p2ov0  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(1048)

这个问题与:debezium如何用kafka connect正确注册sqlserver连接器-connection拒绝
在windows10中,我在docker容器外部的microsoftsqlserver示例上运行debezium。我每390毫秒收到以下警告:
数据库中没有记录最大lsn;请确保sql server代理正在运行
[io.debezium.connector.sqlserver.sqlserverstreamingchangeeventsource]
我在github上检查了debezium的代码,在代码注解中唯一可以找到这个警告的地方指出,只有在代理没有运行时才应该抛出这个警告。我已确认sql server代理正在运行。
为什么会出现此警告?如何修复它?
注:
根据docker的文档,我当前的解决方案似乎只能在非生产环境中工作。

wqnecbli

wqnecbli1#

lsn是与sql server更改相关的“片段”信息。如果您没有lsn,可能是您的cdc没有运行或配置不正确。debezium使用lsn进行复制,因此,您的sql服务器需要生成这个。
一些方法:
是否检查了表是否启用了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数据库已启用并正在运行((见此处)
检查是否启用:

SELECT * 
FROM sys.change_tracking_databases 
WHERE database_id=DB_ID('MyDatabase')

并检查是否正在运行:

EXECUTE sys.sp_cdc_enable_db;  
GO

您的cdc服务正在sql server上运行?见文件

EXEC sys.sp_cdc_start_job;  
GO

在cdc中启用表时,我对rolename有一些问题。就我而言,在 null 解决了我的问题(更多细节在这里)

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

相关问题