2012-08-15 41 views
2

我有一个接收位置正在使用WCF-SQL适配器对存储过程进行轮询。来自SQL的BizTalk轮询 - 提交/回滚事务

接收位置正在使用自定义管道。

该存储过程正在对某些行执行“UPDATE”操作。

我需要BizTalk在事务中执行ROLLBACK以防在稍后阶段管道失败。

我应该怎么做?

回答

2

默认情况下,WCF-SQL适配器将调用存储过程下distributed DTC transaction

此设置(UseAmbientTransaction)是在接收位置属性,绑定选项卡,交易。

(未经测试!)这应该表示如果proc或管道失败,连接将自动回滚。

当在编排中的原子范围的范围内使用时,这应该类似地在适配器上强制执行2阶段提交/ ACID。

+0

感谢您的回答。我试图设置“UseAmbientTransaction”= True,但是当管道失败时,BizTalk引擎没有回滚事务(我的意思是这些行得到更新)。 – ohadinho 2012-08-16 05:41:24

+1

@ user1003363看来我只在WCF-SQL上使用标准的XmlReceive。蒂亚戈还有更多关于这方面的内容:http://connectedthoughts.wordpress.com/2010/03/24/hooking-into-biztalks-underlying-transaction-in-your-custom-receive-pipeline-component/。我猜测是因为每次轮询都拉出一个BTS提交的批次,因为a)PROC成功,b)批次成功提交到消息箱中。 – StuartLC 2012-08-16 05:51:00

+0

所以没有办法使用自定义管道进行回滚? – ohadinho 2012-08-16 06:05:56