是否需要在数据库服务器上启动MSDTC服务以及Web服务器?它也应该在镜像服务器上运行吗?

时间:2013-12-24 11:05:27

标签: sql-server-2012 msdtc distributed-transactions database-mirroring nested-transactions

我的项目支持嵌套事务,因此我们在Web服务器和数据库服务器上运行MSDTC服务。该项目工作正常。但是,我们在数据库服务器上建立了数据库镜像,因此每当发生故障转移时,使用嵌套事务的站点页面都会抛出错误:

该操作对交易状态无效。

我们也在镜像数据库上运行MSTDC服务。请建议应该采取什么措施来解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题