由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务

MAR*_*att 12 sql-server msdtc transactions windows-server-2003 windows-server-2008

我在服务器1上托管了我的Webapp,在服务器2上托管了我的数据库

但我得到了跟随错误

"与基础交易经理的沟通失败了."

我用Google搜索并发现一个帖子,其中提到了DTC(分布式事务)的问题我在server2(数据库服务器)上启用了DTC,并在防火墙中对它进行了例外处理.

在此输入图像描述

在此输入图像描述

但仍然是同样的错误.

这是完整的堆栈跟踪

消息:System.Transactions.TransactionManagerCommunicationException:与基础事务管理器的通信失败.---> System.Runtime.InteropServices.COMException:由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务.可能的原因是:存在防火墙且MSDTC进程没有例外,两台计算机无法通过其NetBIOS名称找到对方,或者两个事务管理器之一未启用对网络事务的支持.(从HRESULT异常:0x8004D02B)在System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32的propgationTokenSize,字节[] propgationToken,IntPtr的managedIdentifier,的Guid&transactionIdentifier,OletxTransactionIsolationLevel&的IsolationLevel,ITransactionShim&transactionShim)在System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(字节[] propagationToken)

好心劝告

vel*_*koz 17

我们有完全相同的情况,不止一次.每次都是以下之一:

  1. 服务器的DNS中的IP地址已过时(如错误消息中所述:" 两台计算机无法通过其NetBIOS名称找到彼此 ").您可以通过ping servername在命令提示符中从一台服务器尝试到另一台服务器来检查是否是这种情况.如果按名称ping失败并且IP成功ping(或按名称ping返回错误的IP),则应该与系统管理员联系以查看DNS/DHCP.

  2. 服务器创建为预配置服务器的映像(例如,如果您正在使用虚拟机,而不是为每个服务器执行全新安装,则只需克隆映像).这是一个问题,因为DTC具有内部"标识符" - 并且在图像克隆的情况下,您的安装现在具有相同的DTC ID,并且将无法彼此通信.解决方案是再次卸载并安装DTC.

希望能帮助到你.


Shi*_*iji 2

需要检查的事项:

  • 您在两台服务器上都完成了此配置吗?
  • 两台服务器是否属于同一域?
  • 你检查过事件日志吗?