Biztalk 如果没有返回数据,如何防止WCF-SQL适配器回滚事务

Biztalk 如果没有返回数据,如何防止WCF-SQL适配器回滚事务,biztalk,Biztalk,我正在使用typedpolling和使用环境事务的存储过程。PollingAvailable语句提供所有行计数。轮询语句只提供有效行的子集,有时甚至不提供任何有效行 在轮询过程中,我需要能够根据一些业务逻辑排除一些结果。有时,过程没有返回任何行,这导致WCF-SQL适配器对事务执行回滚。并且,轮询过程循环,直到至少返回一个有效行 我不想禁用ambient transaction,因为如果流程中稍后发生了什么事情,我希望返回有效的结果 用作我的标准的存储过程事务指令: SET XACT_ABORT

我正在使用typedpolling和使用环境事务的存储过程。PollingAvailable语句提供所有行计数。轮询语句只提供有效行的子集,有时甚至不提供任何有效行

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

我不想禁用ambient transaction,因为如果流程中稍后发生了什么事情,我希望返回有效的结果

用作我的标准的存储过程事务指令:

SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
有什么解决办法吗?
提交内部事务我想还是会回滚的?

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

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


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

我最终得到的解决方案!感谢您提供的只包含一个过程的提示,现在PollingAvailable过程的逻辑变得更加复杂,这是有意义的。