Sql server Debezium:数据库中未记录最大LSN;请确保SQL Server代理正在运行

Sql server Debezium:数据库中未记录最大LSN;请确保SQL Server代理正在运行,sql-server,apache-kafka,apache-kafka-connect,debezium,Sql Server,Apache Kafka,Apache Kafka Connect,Debezium,这个问题涉及: 在Windows 10中,我在Docker容器外部的Microsoft SQL Server实例上运行Debezium。我每390毫秒收到以下警告: 数据库中未记录最大LSN;请确保SQL 服务器代理正在运行 [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource] 我在Github上检查了Debezium的代码,在代码注释中唯一可以找到此警告的地方指出,只有在代理未运行时才应抛出此警告。我已确认S

这个问题涉及:

在Windows 10中,我在Docker容器外部的Microsoft SQL Server实例上运行Debezium。我每390毫秒收到以下警告:

数据库中未记录最大LSN;请确保SQL 服务器代理正在运行
[io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]

我在Github上检查了Debezium的代码,在代码注释中唯一可以找到此警告的地方指出,只有在代理未运行时才应抛出此警告。我已确认SQL Server代理正在运行

为什么会出现此警告?我如何修复它

注意:

根据Docker的文档,我当前的解决方案似乎只在非生产环境中工作

LSN是与SQL Server更改相关的“片段”信息。如果您没有LSN,则可能是您的CDC未运行或配置不正确。Debezium使用LSN进行复制,因此,您的SQL Server需要生成这个

一些方法:

  • 您是否检查了您的表是否启用了CDC?这将列出启用CDC的表:
  • 您的CDC数据库是否已启用并运行?(见附件)
  • 检查是否:

    并检查是否正在运行:

    EXECUTE sys.sp_cdc_enable_db;  
    GO  
    
  • 您的CDC服务正在SQL Server上运行吗?看
  • 在CDC中启用表时,我对rolename有一些问题。对于我的情况,在
    null
    处配置解决了我的问题(更多详细信息)
  • SELECT * 
    FROM sys.change_tracking_databases 
    WHERE database_id=DB_ID('MyDatabase')
    
    EXECUTE sys.sp_cdc_enable_db;  
    GO  
    
    EXEC sys.sp_cdc_start_job;  
    GO  
    
        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