biztalk - 如果没有返回数据,如何防止 WCF-SQL 适配器回滚事务
问题描述
我正在使用 typedpolling 和使用环境事务的存储过程。PollingAvailable 语句给出“所有”行数。轮询语句只给出有效行的子集,有时没有。
在轮询过程中,我需要能够根据一些业务逻辑排除一些结果。有时该过程没有返回任何行,这会导致 WCF-SQL 适配器对事务进行回滚。并且,轮询过程会循环,直到返回至少一个有效行。
我不喜欢禁用环境事务,因为我想返回“有效”结果,如果在此过程中稍后发生某些事情。
存储过程事务指令(用作我的“标准”):
SET XACT_ABORT ON;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
任何解决方法的想法?提交内部事务我猜无论如何都会回滚?
解决方案
因此,“正确”的解决方案是制作 PollingDataAvailableStatement 以根据轮询语句的预期输出返回正确的值 0 或 >0。
我在它很重要的情况下,因为它并不总是很重要:),我已经向 SP 添加了一个标志,以表明它是从 PollingDataAvailableStatement 调用的,因此 SP 可以使用它的一些逻辑来确定数据是否可用并返回该信号.
当然,您可以使用单独的 SP,但出于维护原因,我更愿意将逻辑保留在一个地方。
推荐阅读
- sql-server - SQL Server 语法错误:未绑定多部分标识符
- python - 不能在异步调用的函数中放入 Python 调试器?
- relative-path - 如何在 Taleo Connect 客户端中使用相对路径?
- reactjs - react-vr和react-360的布局定位有什么区别?
- jsf - primefaces p:photocam 被 chrome 挡住了
- python - Scipy 无法正确安装
- sql - 如何在不丢失重复值的情况下使两个表相交 oracle
- jboss7.x - 如何捕捉 org.jboss.weld.context.ContextNotActiveException
- sql-server - 将数据加载到具有固定长度 ssis 的 .txt 文件中
- arrays - 猫鼬添加到数组中没有重复和排序