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);肯定会欢迎任何帮助。
我正在尝试让 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);肯定会欢迎任何帮助。