1

看来我遇到了与 Microsoft 分布式事务协调器 (MSDTC) 相关的问题。

设想

我正在使用 TransactionScope,并且在单个范围内它会访问不同服务器上的两个不同数据库(例如,运行 Windows Server 2003 的DB_A和运行 Windows Server 2008 的DB_B)。一个数据库使用 Entity Framework 4.0 访问,另一个使用普通的 ADO.NET API。

当我从我的开发机器(运行 WinXP)运行应用程序时,它会准确地提交和回滚两个连接。但是,当我运行部署在另一台服务器上的应用程序(例如运行 Windows Server 2003 的WAS_A)时,它会正确提交,但如果出现异常,则不会回滚两台服务器上的数据库活动。

我认为这将是WAS_A上的 MSDTC 配置问题。所以我去了 MSDTC -> 安全配置并检查了所有可用的选项(就像我之前在其他机器上所做的那样)。但我仍然面临同样的问题。

寻找您的专家意见。:)

4

1 回答 1

0

我相信您需要研究Enable Transaction Flow。具体来说,看看一个可能会出错而另一个如何完成,如TransactionScope 和 WCF Services中所述:

第二个 WCF 服务调用中的错误没有回滚在之前的 WCF 服务调用中所做的更改...为了在您的客户端中创建环境事务并确保它被您的 WCF 服务使用...

然后文章详细介绍了以下步骤:

  • 配置您的绑定transactionFlow
  • 装饰你的界面[TransactionFlow(TransactionFlowOption)]
  • 装饰你的方法[OperationBehavior(TransactionScopeRequired)]
  • Transaction Binding可选择使用*更新您的连接字符串

*注意:我认为这是可选的。

于 2013-01-08T15:34:45.607 回答