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

时间:2019-05-13 08:39:27

标签: biztalk

我在使用环境事务的存储过程中使用了类型轮询。 PollingAvailable语句提供“所有”行计数。轮询语句仅给出有效行的子集,有时不给出。

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

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

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

SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

有任何解决方法的想法吗? 提交内部事务,我想还是会回滚吗?

1 个答案:

答案 0 :(得分:1)

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

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

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