MSDTC 通信通过 *** 失败
Posted
技术标签:
【中文标题】MSDTC 通信通过 *** 失败【英文标题】:MSDTC communication fails over *** 【发布时间】:2010-09-27 01:22:57 【问题描述】:我有一个应用程序在同一台服务器上运行跨越多个数据库的事务。当然,这涉及到 Microsoft 分布式事务协调器,并且一切正常。
但是,当我通过 *** 远程连接到托管服务器的网络并在本地计算机上运行应用程序时,我收到以下错误:System.Transactions.TransactionManagerCommunicationException: “与底层事务管理器的通信失败。”
由以下原因引起:System.Runtime.InteropServices.COMException: 对 COM 组件的调用已返回错误 HRESULT E_FAIL。
这是原始异常的堆栈跟踪:
在 System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel&isolationLevel, ITransactionShim& transactionShim) 在 System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
只有当我通过 *** 隧道连接到服务器时才会出现问题。 另请注意,我暂时禁用了本地计算机上的 Windows 防火墙,以确保它不会阻止 MSDTC。
有人知道通过 *** 运行 MSDTC 时有什么问题吗?
【问题讨论】:
【参考方案1】:我在使用 Windows 7 x64 客户端和 Server 2003R2 服务器时遇到了同样的问题。我已经能够使用 XP、Vista x86 和 Windows 7 x86 使其工作(在同一 ***、同一服务器上)。我有一个 Microsoft 打开的支持电话,他们正在调查它。我很好奇 - 你们在客户端机器上使用什么操作系统?
【讨论】:
有趣。我们在客户端使用的是 Windows XP SP2(32 位),在服务器上使用的是 Windows Server 2003。【参考方案2】:我建议您运行 DTCPing(可从某处的 Microsoft 站点获得)它在两台机器上同时运行并检测各种 DTC 问题。
请注意,在我真正阅读说明并在单击开始测试按钮之前开始测试之前,我在使用此工具时遇到了很大的困难。
【讨论】:
【参考方案3】:您是否管理 *** 连接? *** 上可能存在受限端口。同样,您是否管理您的服务器?您的服务器可能只允许来自内部 IP 地址的连接,而不是用于 *** 服务的网段。如果您是管理员,或许说出您使用的 *** 软件会有所帮助。
【讨论】:
不,很遗憾,我既不管理 *** RAS 服务器,也不管理与应用程序通信的数据库服务器。但是您可能对端口和子网/IP 范围限制是正确的。我会与网络部门核实。以上是关于MSDTC 通信通过 *** 失败的主要内容,如果未能解决你的问题,请参考以下文章
已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。
已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。
MSDTC ERROR 将应用程序和数据库分离到不同的服务器后