我的项目支持嵌套事务,因此我们在Web服务器和数据库服务器上运行MSDTC服务。该项目工作正常。但是,我们在数据库服务器上建立了数据库镜像,因此每当发生故障转移时,使用嵌套事务的站点页面都会抛出错误:
该操作对交易状态无效。
我们也在镜像数据库上运行MSTDC服务。请建议应该采取什么措施来解决这个问题。
答案 0 :(得分:0)
在默认的DTC设置中,服务器的DTC启动协调它们的事务(在您的情况下是Web服务器)。当第一个数据库服务器出现故障时,它会回滚当前事务并通知事务协调器,这就是您收到错误的原因。网络服务器无法提交交易,因为至少有一位参与者投票支持回滚。
我认为你不能解决这个问题。您的网络服务器应该做的是重试整个交易。数据库调用将由镜像服务器处理,并且会成功。
这至少是我的意见。我对分布式事务没有权限,也没有自动故障转移的数据库集群......