你目前正处于脱机状态,正在等待 Internet 重新连接

如何排查 MS DTC 防火墙问题

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 306843
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
概要
本文介绍的故障排除步骤,以帮助您使 Microsoft 分布式事务处理协调器 (MS DTC) 通过具有另一个的 MS DTC 的防火墙进行通信。下面的列表概述了一些通过防火墙使用 MS DTC 时,您可能会遇到的问题:
  • 您的应用程序功能成功时 MTS 或 COM + 组件有其 事务支持 属性设置为 不支持 或 $ 支持,但它不能成功时该属性设置为 要求 或 $ 新要求
  • 您会收到以下错误消息:
    新的事务无法登记在指定的事务处理协调器
  • 您会收到以下错误消息:
    错误 8004d00a。分布式的事务错误
虽然几个其他 Microsoft 文档介绍了如何解决此问题,这篇文章总结了大部分它们。

注意下列疑难解答步骤旨在与 Microsoft Windows 2000 及 Microsoft Windows 2000 操作系统的系统仅一起使用。
更多信息

故障排除步骤

重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表
  1. 验证两台服务器上已启动的 MS DTC 服务。
  2. 如果您的服务器正在运行 Windows NT 4.0,您必须在安装 Windows NT 4.0 选项包 (NTOP) 后重新应用 Windows NT 4.0 服务包 6 (SP6)。检查以验证已被 Windows NT 4.0 SP6 重新应用 Windows NT 4.0 选项包的安装后下表中列出的文件版本:
    文件名称安装后的版本 NTOP版本后,重新安装 SP6
    Msdtcprx.dll1997.11.5321999.6.854.0
    Msdtctm.dll1997.11.5321999.6.854.0
    Xolehlp.dll1997.11.5321998.08.762
    有关 Windows NT 4.0 选项的详细信息包安装,请参阅下面的 Microsoft 白皮书:
  3. 配置两台服务器,以便防火墙之间流动的 MS DTC 通信。控件的 RPC 动态端口分配,请按照下列步骤操作。

    注意您必须在两台计算机上执行这些步骤。

    注意防火墙必须在两个方向上指定的端口都打开。
    1. 若要启动注册表编辑器单击 开始、 单击 运行,键入 regedt32,然后单击 确定

      您必须使用 Regedt32.exe 文件而不是 Regedit.exe 文件。Regedit.exe 文件不支持该 REG_MULTI_SZ 数据类型所需的端口值。
    2. 在注册表编辑器中展开以下项:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
    3. 单击 RPC 文件夹,然后单击 编辑 菜单上的 添加项
    4. 添加项 对话框中在 项名称 框中键入 Internet,然后单击 确定
    5. 单击 Internet 文件夹,然后单击 编辑 菜单上的 添加数值
    6. 添加值 对话框中键入 数值名称 框中的 端口
    7. 数据类型 框中选择 REG_MULTI_SZ,然后单击 确定
    8. 多字符串编辑器 对话框中指定端口或想要用于在 数据 框中的动态端口分配的 RPC 端口,然后单击 确定

      您键入的每个字符串值指定一个端口的值的闭合范围。例如对于要打开端口 5000 指定"5000"。要打开端口 5000 到 5020 (含) 之间的端口指定 5000-5020。您可以通过指定一个端口或端口范围内,每行指定多个端口或端口范围。所有的端口必须在 1024年到 65535 的范围内。如果任何端口超出此范围,或者是无效的任何字符串 RPC 将整个配置视为无效。

      我们建议您打开端口 5000 和更高版本,并在打开的 15 到 20 个端口的最小。
    9. 按照步骤 e 通过添加另一个键的步骤 h。使用下列值:
      • 值: PortsInternetAvailable
      • 数据类型: REG_SZ
      • 数据: Y
      这表示将变得 Internet 可在端口值之下列出的端口。
    10. 配置您的防火墙以允许传入到指定的动态端口和端口 135 (RPC 终结点映射端口) 的访问。
    11. 重新启动计算机。RPC 重新启动后,它将分配传入端口动态,基于您指定的注册表值。例如对于打开端口 5000 到 5020 (含) 之间,创建以下指名值:
      • 端口: REG_MULTI SZ: 5000 5020
      • PortsInternetAvailable: REG_SZ: Y
      • UseInternetPorts: REG_SZ: Y
    DTC 还要求您可以通过使用 NetBIOS 或 DNS 解析计算机名。您可以测试是否可以解决 NetBIOS,使用 PING 协议名称和 $ 服务器名称。客户端计算机必须能够解析服务器的名称。此外,服务器必须能够解析客户机的名称。如果 NetBIOS 无法解析名称,您可以将项添加到 Lmhosts 文件,在计算机上。有关如何配置 Windows 2000 上的 TCP 端口的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    300083如何限制在 Windows 2000 和 Windows XP 上的 TCP/IP 端口
  4. 如果通过防火墙 MS DTC 仍然不起作用,下载 DTCPing.exe 工具和所涉及的两台服务器上安装此工具。以下文件是可从 Microsoft 下载中心下载:
    DTCPing.exe 文件包含以下文件:
       Date         Time   Version  Size     Filename   ----------------------------------------------------------   29-Oct-2003  22:56  1.8.0.1  274,490  Dtcping.exe   15-Dec-2003  22:05             1,618  Eula.txt   24-Nov-2003  20:59             1,560  Machinea_failure.log   24-Nov-2003  20:21             1,901  Machinea_success.log   24-Nov-2003  20:55               999  Machineb_failure.log   24-Nov-2003  20:31             1,750  Machineb_success.log   24-Nov-2003  20:15             2,325  Readme.txt
    发布日期: 2003 2003年 11 月 24日,

    有关如何下载 Microsoft 的支持文件的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    119591如何获取 Microsoft 的支持文件从联机服务
    Microsoft 扫描此文件的病毒。Microsoft 使用该文件已过帐的日期上获得的最新病毒检测软件。该文件存储在安全增强型服务器上,这有助于防止未经授权的情况下对其进行更改,对该文件。
  5. 使用该 DTCPing.exe 中所包含的 Readme.txt 文件来测试远程过程调用 (RPC) 和 $ 分布式事务处理协调器 (DTC) 从服务器 1 到通信 Server2 下载。是否成功此测试,请在对 Server1 从 Server2 运行测试。

    注意是否 RPC 不能在两个方向流动,MS DTC 通信失败在两个方向上。 如果将失败 RPC 通信 DTCPing 窗口 (在任何一个服务器) 上将显示此故障也保存在相关联的 dtcping.log 文件中。请参阅有关详细信息的 Readme.txt 文件。如果在两个方向,则测试失败,并且该日志指出故障是在 RPC 通信中继续执行下一步。如果在两个方向,则测试失败,并且该日志指出失败是 DTC 通信中继续步骤 9 下面。
  6. RPC 失败中至少一个方向 (例如对于从 Server2 中为 Server1),如果直接将您的防火墙管理员联系,以确保 Internet 控制消息协议 (ICMP) 是在两个方向上打开。

    注意通常,您可以确定是否 RPC 通过读取 dtcping.log 文件失败。

    默认状态下,ICMP 是 port1。您可以验证这位于 %windir%\WinNT\System32\Drivers\ 文件夹中的协议文件中。通过从服务器 1 的 NetBios 名称 Ping Server2。如果将失败 ping 命令继续到下一步。否则,请继续步骤 8。
  7. 通过从服务器 1 以确保正确的端口已打开防火墙上的 ping IP 地址 Ping Server2。网络监视器跟踪可以验证此数据类型。如果 IP 地址 ping 操作成功,并且 NetBios 名称 ping 失败没有名称解析问题。

    注意您可以使用该 ipconfig/all 检索 IP 地址或 IP 地址的服务器的命令。

    测试名称解析的快速方法是使客户端服务器的主机文件中的条目。这是在其该 NetBios 名称 ping 失败的服务器。您可以建立您的输入文件中包含该示例项之后的模型。

    注意在为了排除故障时主机文件中,您必须只进行一项。如果新的条目可以解决名称解析问题,从主机文件中删除的条目,该条目,您必须在 DNS、 WINS 服务器或 LmHosts 文件中。

    存在名称解析问题的其他解决方案,但它们超出了本文的范围。
  8. 如果将失败 pinging Server2 从服务器 1 的 NetBios 名称或从服务器 1 的 NetBios 名称由 pinging Server2 成功但 DTCPing 测试显示 RPC 通信仍然无法正常工作是可能的端口 135 (终结点映射或 EPM) 尚未打开双向在防火墙上。 请检查以确保 EPM 是在两个方向上打开防火墙。此位置进行网络监视器跟踪可能会有所帮助查明问题。
  9. 您只到达此步骤,如果 DTCPing 测试指示 RPC 通信在两个方向上都工作正常。如果 DTCPing 指示没有错误,在两个方向,RPC 和 MS DTC 通信正确流动。
  10. 如果 DTCPing 指出 DTC 通信发生故障中至少一个方向 (例如对于从 Server2 中为 Server1),直接防火墙管理员以验证该端口是否打开开发人员指定开发人员通过 MS DTC 配置文章的出现时 (请参阅第 3 步)。 此外,某些规则可应用于禁止 RPC 的防火墙 (或两个) 的服务器的回调。网络监视器跟踪可能有助于解决此特定的方案。
  11. 如果 DTCPing 返回一条错误消息类似于以下内容:
    意外: 我会话 guid 是相同的伙伴的 guid
    检查是否已复制或从其他服务器克隆当前服务器。如果是这样,请在注册表中找到 HKEY_CLASSES_ROOT\CID 项。此的项,您可能会注意到多个 GUID。找到其基础的描述键是 MSDTC GUID。请注意 DTCPing 输出窗口中还列出此 GUID。 如果在其他服务器中有一个是完全相同的其注册表中的 MS DTC 的 GUID 必须为一个注册表中的 MS DTC 创建一个新的 GUID。要这样做,您可以使用 GuidGen。

    您将此新的 GUID 以及所有其基础项添加到 HKEY_CLASSES_ROOT\CID 后,确保删除旧的 GUID,它所替换。

    如果此步骤可以解决您的问题,它我们强烈建议您阅读以下文章以了解更多关于复制 (或"重影") 的计算机:有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    162001不磁盘重复已安装的 Windows 版本

警告:本文已自动翻译

属性

文章 ID:306843 - 上次审阅时间:10/29/2007 14:54:58 - 修订版本: 5.3

Microsoft COM+ 1.0, Microsoft Transaction Services 2.0

  • kbmt kbproductlink kbdownload kbdtc kbhowto KB306843 KbMtzh
反馈