SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; please ensure 异常处理

问题:SQL Server 启动 Database CDC 之后,Flink CDC 读取库中表时无法获取表更新数据

[debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; please ensure that the SQL Server Agent is running 

原因:Flink CDC 读取 SQL Server ,需要先准备好 SQL Server enable Database CDC & enable Table CDC

No maximum LSN recorded in the database 这个问题伴随在 Caused by: org.apache.flink.table.api.ValidationException: SqlServer database poc_db do not enable cdc. 之后。因此,需要对未启动 CDC 的库和表依次授权开启。

解决

1、为库启用

-- ====
-- Enable Database for CDC
-- ====
USE MyDB
GO
EXEC sys.sp_cdc_enable_db
GO

2、为表启用

-- Enable CDC for a table specifying filegroup
USE MyDB
GO

EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'MyTable',
    @role_name     = N'MyRole',
    @filegroup_name = N'MyDB_CT',
    @supports_net_changes = 1
GO

或者在 Microsoft SQL Server Management Studio 中 enable Database CDC & enable Table CDC

SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; please ensure 异常处理_第1张图片

备注:

包含更改表的文件组。

默认情况下,更改表位于数据库的默认文件组中。 希望控制各个更改表放置位置的数据库所有者可以使用 @filegroup_name 参数为与该捕获实例相关的更改表指定一个特定的文件组。 指定的文件组必须已存在。 通常建议将更改表置于独立于源表的文件组中。 有关演示 @filegroup_name 参数使用方法的示例,请参阅 通过指定文件组选项启用表 模板。

参考Microsoft官网 - 启用和禁用“变更数据捕获” - SQL Server | Microsoft Learn

你可能感兴趣的:(Flink,数据库)