Sql server 2012 是否需要在数据库服务器和web服务器上启动MSDTC服务?它也应该在镜像服务器上运行吗?

Sql server 2012 是否需要在数据库服务器和web服务器上启动MSDTC服务?它也应该在镜像服务器上运行吗?,sql-server-2012,msdtc,distributed-transactions,database-mirroring,nested-transactions,Sql Server 2012,Msdtc,Distributed Transactions,Database Mirroring,Nested Transactions,我的项目支持嵌套事务,因此我们在web服务器和数据库服务器上运行MSDTC服务。这个项目运作良好。但是,我们在数据库服务器上建立了数据库镜像,因此每当发生故障转移时,使用嵌套事务的站点页面都会抛出错误: 该操作对于事务的状态无效 我们也在镜像数据库上运行MSTDC服务。请建议应采取什么措施来克服此问题。在默认DTC设置中,是启动事务的服务器(您的情况下是web服务器)的DTC协调事务。当第一个数据库服务器关闭时,它将回滚其当前事务并将此情况通知事务协调器,这就是为什么会出现错误。Web服务器无法

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

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


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

在默认DTC设置中,是启动事务的服务器(您的情况下是web服务器)的DTC协调事务。当第一个数据库服务器关闭时,它将回滚其当前事务并将此情况通知事务协调器,这就是为什么会出现错误。Web服务器无法提交事务,因为至少有一个参与者投票赞成回滚

我认为你绕不过去。您的Web服务器应该做的是重试完成事务。数据库调用将由镜像服务器处理,并将成功


这至少是我的看法。我对分布式事务和具有自动故障切换功能的数据库群集没有权威…

谢谢。我同意,在故障转移时,交易将回滚。然而,我担心的是,当一个新的交易开始后,它应该完成。为此,我已使DTC服务保持运行。但是,故障转移后我仍然无法执行事务。