【问题标题】:Is it required to start MSDTC service on database server along with web server? Also should it be running on mirroring server too?是否需要在数据库服务器和 Web 服务器上启动 MSDTC 服务?它也应该在镜像服务器上运行吗?
【发布时间】:2013-12-24 11:05:26
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢马克。我同意,在故障转移时事务将被回滚。但是我担心的是,在开始新事务之后,它应该完成。为此,我已经让 DTC 服务保持运行。但是,故障转移后我仍然无法执行事务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多