0

我的项目支持嵌套事务,因此我们在 Web 服务器和数据库服务器上运行 MSDTC 服务。该项目运行良好。但是,我们在数据库服务器上建立了数据库镜像,因此无论何时发生故障转移,使用嵌套事务的站点页面都会引发错误:

该操作对事务的状态无效。

我们也在镜像数据库上运行 MSTDC 服务。请建议应该做些什么来克服这个问题。

4

1 回答 1

0

在默认的 DTC 设置中,它是启动事务的服务器的 DTC(在您的情况下为 Web 服务器)来协调它们。当第一个数据库服务器出现故障时,它会回滚其当前事务并将此通知事务协调器,这就是您收到错误的原因。网络服务器无法提交事务,因为至少有一个参与者投票支持回滚。

我不认为你能解决这个问题。您的网络服务器应该做的是重试整个事务。数据库调用将由镜像服务器处理并成功。

这至少是我的看法。我没有分布式事务的权限,也没有自动故障转移的数据库集群......

于 2014-01-26T01:48:53.110 回答