我有一个希望支持 SQL Server 镜像的应用程序。但是,当前的体系结构使得多个 WCF 服务和 DB 连接将在单个 MSDTC 事务中登记,并且 Microsoft 声明使用镜像时不支持 MSDTC。
他们的解释并没有提供非常丰富的信息:
当您将数据库镜像与 MS DTC 事务一起使用时,可能会发生类似的情况。例如,新的主体服务器在故障转移后联系 MS DTC。但是,MS DTC 不知道新的主体服务器。因此,MS DTC 会停止任何处于“准备提交”阶段的事务,即使这些事务在其他数据库中被视为已提交。
我在理解上有问题的是最后一句话。这与如果数据库服务器没有镜像,只是在同一时间点死亡有什么不同?有人可以向我解释吗?我需要能够向我组织中的其他人(以及客户)解释这一点,但我不明白为什么 MSDTC 可以在一种情况下正确回滚/补偿,但如果其中一个参与者是镜像 SQL 服务器则不能(在完全安全模式下)。