如果没有返回数据,如何防止 WCF-SQL 适配器回滚事务
How to prevent WCF-SQL adapter to roll back transaction if no data is returned
我在使用环境事务的存储过程中使用类型轮询。 PollingAvailable 语句给出 "all" 行计数。轮询语句只给出有效行的一个子集,有时 none.
在轮询过程中,我需要能够根据某些业务逻辑排除某些结果。有时过程中没有 returned 行,这会导致 WCF-SQL 适配器对事务进行回滚。并且,轮询过程会循环进行,直到至少有一个有效行被 returned.
我不想禁用环境事务,因为 "valid" 结果我想 return,如果在此过程中稍后发生某些事情。
存储过程事务指令(用作我的"standard"):
SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
有什么解决方法吗?
提交内部事务我想无论如何都会被回滚?
因此,'correct' 解决方案是将 PollingDataAvailableStatement 制作成 return 正确的值 0 或 >0,具体取决于轮询语句的预期输出。
我在某些情况下很重要,因为它并不总是很重要 :),我已经向 SP 添加了一个标志以指示它是从 PollingDataAvailableStatement 调用的,因此 SP 可以使用一些逻辑来确定数据是否是可用并且 return 该信号。
当然,您可以使用单独的 SP,但出于维护原因,我更愿意将逻辑保留在一个地方。
我在使用环境事务的存储过程中使用类型轮询。 PollingAvailable 语句给出 "all" 行计数。轮询语句只给出有效行的一个子集,有时 none.
在轮询过程中,我需要能够根据某些业务逻辑排除某些结果。有时过程中没有 returned 行,这会导致 WCF-SQL 适配器对事务进行回滚。并且,轮询过程会循环进行,直到至少有一个有效行被 returned.
我不想禁用环境事务,因为 "valid" 结果我想 return,如果在此过程中稍后发生某些事情。
存储过程事务指令(用作我的"standard"):
SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
有什么解决方法吗? 提交内部事务我想无论如何都会被回滚?
因此,'correct' 解决方案是将 PollingDataAvailableStatement 制作成 return 正确的值 0 或 >0,具体取决于轮询语句的预期输出。
我在某些情况下很重要,因为它并不总是很重要 :),我已经向 SP 添加了一个标志以指示它是从 PollingDataAvailableStatement 调用的,因此 SP 可以使用一些逻辑来确定数据是否是可用并且 return 该信号。
当然,您可以使用单独的 SP,但出于维护原因,我更愿意将逻辑保留在一个地方。