首页 > 解决方案 > 如果没有返回数据,如何防止 WCF-SQL 适配器回滚事务

问题描述

我正在使用 typedpolling 和使用环境事务的存储过程。PollingAvailable 语句给出“所有”行数。轮询语句只给出有效行的子集,有时没有。

在轮询过程中,我需要能够根据一些业务逻辑排除一些结果。有时该过程没有返回任何行,这会导致 WCF-SQL 适配器对事务进行回滚。并且,轮询过程会循环,直到返回至少一个有效行。

我不喜欢禁用环境事务,因为我想返回“有效”结果,如果在此过程中稍后发生某些事情。

存储过程事务指令(用作我的“标准”):

SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

任何解决方法的想法?提交内部事务我猜无论如何都会回滚?

标签: biztalk

解决方案


因此,“正确”的解决方案是制作 PollingDataAvailableStatement 以根据轮询语句的预期输出返回正确的值 0 或 >0。

我在它很重要的情况下,因为它并不总是很重要:),我已经向 SP 添加了一个标志,以表明它是从 PollingDataAvailableStatement 调用的,因此 SP 可以使用它的一些逻辑来确定数据是否可用并返回该信号.

当然,您可以使用单独的 SP,但出于维护原因,我更愿意将逻辑保留在一个地方。


推荐阅读