我正试图获得debezium 1.4.1的事务元数据。最后使用SQL Server数据库。
它似乎在某种程度上工作-dbservername.transaction
主题已经创建,当我运行包含事务的存储过程时,然后收到"status":"BEGIN"
事件,以及表主题上的CDC数据包。
未收到"status":"END"
事件…直到我再次运行存储过程。
很可能是我没有正确关闭存储过程中的事务(无论如何,我不是MSSQL专家)…
这是我使用的结构:
CREATE PROCEDURE schema.myproc
AS
BEGIN
BEGIN TRANSACTION
...
COMMIT;
END
GO
任何想法我需要做什么,以获得END
事件在过程结束?
不幸的是,在连接器接收到另一个事务BEGIN事件之前,没有可靠的方法来发出END事件。因此,如果数据库上没有连续的事务负载,则会延迟END事件。
您可以考虑在循环中运行一些虚拟事务来触发此操作。我们计划通过Debezium的心跳功能来支持这个OOTB(见DBZ-3263);在这方面的任何帮助都是非常受欢迎的。