Debezium 交易元数据 - SQL 服务器未收到 `END` 事件

Debezium transaction metadata - no `END` event received with SQL Server

我正在尝试让 transaction metadata 使用 debezium 1.4。1.Final 使用 SQL 服务器数据库。

它似乎在某种程度上起作用了 - dbservername.transaction 主题已经创建,当我 运行 一个包含事务的存储过程时,"status":"BEGIN" 事件是收到,以及关于 table 主题的 CDC 数据包。

但是,没有收到 "status":"END" 事件...直到我再次 运行 存储过程。

很可能是我没有正确关闭存储过程中的事务(无论如何我都不是 MSSQL 专家)...

这是我正在使用的结构:

CREATE PROCEDURE schema.myproc
AS
BEGIN
    BEGIN TRANSACTION
        ...
    COMMIT;
END
GO

知道我需要做什么才能在过程结束时获得 END 事件吗?

不幸的是,没有可靠的方法可以在连接器收到另一个事务 BEGIN 事件之前发出 END 事件。因此,如果您的数据库没有连续的事务负载,END 事件会延迟。

您可以考虑 运行 在循环中使用一些虚拟事务来触发此操作。我们计划通过 Debezium 的心跳功能支持此 OOTB(参见 DBZ-3263);肯定会欢迎任何帮助。