如何重新生成或移动用于 SQL 故障转移群集的 MSDTC 安装

文章翻译 文章翻译
文章编号: 294209 - 查看本文应用于的产品
重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

概要

本文介绍如何重新生成已损坏的 Microsoft 分布式事务处理协调器 (MSDTC) 安装以用于故障转移群集 SQL 安装,以及如何将 MSDTC 群集资源移动到一个新组。

Microsoft 仅支持在群集节点上作为群集资源运行 MSDTC。我们不建议也不支持在群集上以独立模式运行 MSDTC。在 Windows 群集上将 MSDTC 用作非群集资源会出问题。此配置易出问题,因为在发生群集故障转移时,事务可能会被孤立,而且可能会出现数据损坏。

注意:应在所使用的计算机上直接执行这些步骤,而不要通过任何类型的远程连接来执行。

注意:本文中的信息不适用于 Microsoft Windows Server 2003。对于基于 Microsoft Windows Server 2003 的系统,请参见 Microsoft 知识库中的以下文章:
301600 如何在 Windows Server 2003 群集上配置 Microsoft 分布式事务处理协调器

更多信息

在 SQL Server 故障转移群集服务器上重新生成 MSDTC

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
  1. 将所有服务切换到手动模式。但是,不要切换以下服务(如果有):
    • Alerter
    • Cluster Service
    • Computer Browser
    • Distributed File System
    • Distributed Link Tracking Client
    • Distributed Link Tracking Server
    • DNS Client
    • Event Log
    • IPSEC Policy Agent
    • License Logging Service
    • Logical Disk Manager
    • Messenger
    • Net Logon
    • NTLM Security Support Provider
    • Network Connectors
    • Plug and Play
    • Process Control
    • Remote Procedure Call (RPC) Locator
    • Remote Procedure Call (RPC) Service
    • Remote Registry Service
    • Removable Storage
    • Security Accounts Manager
    • Server
    • Spooler
    • TCP/IP NetBIOS Helper
    • Time Service
    • Windows Management Instrumentation Driver Extensions
    • Windows Time Service
    • Workstation
    注意:某些安装可能并非包含所有这些服务,因为此列表既包括了 Microsoft Windows NT 4.0 Enterprise Edition 上的服务,也包括了 Microsoft Windows 2000 Advanced Server 上的服务。
  2. 关闭控制面板并重新启动服务器。这将从内存中清除这些服务加载的 DLL;否则,这些服务将保留在内存中,并锁定系统资源。
  3. 如果使用的是 Windows NT 4.0,请在所有节点上运行 msdtc -remove。如果使用的是 Windows 2000,请在所有节点上运行 msdtc -uninstall
  4. 从注册表中删除以下项(如果存在):

    HKEY_CLASSES_ROOT\CID

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet0\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet1\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet2\Services\MSDTC

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet3\Services\MSDTC


    注意:ControlSet 的数量将因系统而异。
  5. 删除 Z:\MSDTCLog 目录,其中 Z 是该目录当前所在的群集磁盘。

    警告:如果必须保留活动日志和未提交的事务,则不要执行此操作。不要继续;应与 SQL Server 支持专业人员联系以获得额外的指导。
  6. 如果使用的是 Windows NT 4.0,请在群集的两个节点上删除以下文件。对于 Windows 2000 安装,可以跳过此步骤。
    • Adme.dll
    • Dac.exe
    • Dacdll.dll
    • Dtccfg.cpl
    • Dtccm.dll
    • Dtctrace.dll
    • Dtctrace.exe
    • Dtcxatm.dll
    • Dtcuic.dll
    • Dtcuis.dll
    • Dtcutil.dll
    • Enudtc.dll
    • Logmgr.dll
    • Msdtc.exe
    • Msdtc.dll
    • Msdtcprx.dll
    • Mtxclu.dll
    • Msdtctm.dll
    • Svcsrvl.dll
    • Xolehlp.dll
    注意:默认情况下,MSDTC 将安装到第一个包含下列有效资源的组:IP 地址资源、网络名称资源和物理磁盘资源。如果将 SQL Server 7.0 已配置为群集,并且是第一个符合此条件的组,MSDTC 将使用它在该组中最先找到的资源。这些资源可能是 SQL Server 资源或 MSDTC 资源。

    可在 SQL Server Service Pack 2 CD 上的 \x86\Other 文件夹中找到 MSDTC 安装程序 (Dtcsetup.exe),在 Windows NT 4.0 系统上,应将它作为源。Windows 2000 系统应使用 %systemroot%\System32 文件夹中的 Dtcsetup.exe 文件;该文件夹通常是 Winnt\System32 文件夹。

    警告:在运行 Dtcsetup.exe 之前,请确保群集的所有资源组都由节点 1 控制。
  7. 在第一个节点上运行 Dtcsetup.exe;这将会把这些文件复制到 %windir%/System32 文件夹中。

    警告:在执行完 Dtcsetup.exe 程序后,请仔细阅读屏幕上的内容。在仔细阅读屏幕信息后,再单击“确定”。Dtcsetup.exe 可能要求您在另一个节点上执行此相同的步骤,然后再单击“确定”。

    注意:对于 Microsoft Windows 2000,只有在第一个节点上运行 Dtcsetup.exe 后,系统提示您在另一个节点上运行 Dtcsetup.exe 时才运行它。
  8. 当系统提示您在第二个节点上运行 Dtcsetup.exe 时,请执行此操作。如果在第一个节点上执行完 Dtcsetup.exe 后未显示任何信息,请继续在第二个节点上运行该文件。

    注意:可能需要检查事件查看器,确保在每个节点上都成功运行了 Dtcsetup.exe。

    警告:不要移动任何群集资源。如果移动了任何资源,或在此过程中发生了故障转移,则必须重新执行这一过程。
  9. 在第二个节点安装上单击确定按钮后,可随后在第一个节点上单击确定,并根据安装需要重新启动任何计算机。
  10. 仅限 Windows 2000 用户:在运行 Dtcsetup.exe 的第一个节点上,打开一个命令提示符窗口,键入 comclust.exe,然后按 Enter。在第一个节点上完成此步骤后,在另一个节点上重复此步骤。
  11. 确保已在群集磁盘上创建了 DTCLOG 文件夹。默认情况下,使用本地系统帐户启动 MSDTC 服务。这个本地系统帐户应具有 DTCLOG 文件夹的完全权限。

在 SQL Server 6.5 和 SQL Server 7.0 虚拟服务器上将 MSDTC 重置回典型安装的步骤

问题

为重新安装 MSDTC 而不取消 SQL Server 的群集配置,运行了 Dtcsetup.exe。使用的是 IP 地址或网络名称。在此过程中,如果 MSDTC 群集资源与 SQL Server 实例在相同的组中,则用户对此资源的依存关系没有控制权。

如果 MSDTC 资源所在的组不是安装 SQL Server 的组,则此方法不适用。

解决方案
  1. 为 MSDTC 创建一个群集 IP 地址资源,将其命名为“MSDTC IP ADDRESS”,并为其分配一个唯一的 IP 地址。它必须是一个真实的 IP 地址(而不是编造的地址)。成功创建该资源后,将它联机。
  2. 创建一个群集网络名称资源,将其命名为“MSDTC Network Name”,并使其依赖于 MSDTC IP ADDRESS。应使用唯一的名称,例如“CLUSTDTC”。
  3. 在群集管理器中,右键单击 MSDTC 群集资源,然后选择脱机
  4. 右键单击 MSDTC 群集资源,然后单击属性
  5. 属性对话框中,单击依存关系,然后单击修改按钮。
  6. 选择新创建的 MSDTC 资源(MSDTC 网络名称和 IP 地址)作为依赖项,然后单击添加
  7. 选择作为依赖项列出的任何现有 SQL Server 群集资源,然后单击删除
  8. 单击确定,然后再次单击确定
  9. 右键单击 MSDTC 资源,选择使其恢复联机,然后测试故障转移。
  10. 为确保所有系统文件都正确无误,我们建议 Windows 2000 用户使用 Windows 2000 文件检查工具来验证系统文件。为此,请在命令提示符处键入 sfc /scannow

    注意:准备好 Windows 2000 CD 和 Windows 2000 Service Pack CD;如果发现不一致的情况,可能会需要使用这些 CD。

将 MSDTC 资源移动到特定的组

默认情况下,在不同的操作系统上,MSDTC 资源的安装位置会有所不同。

Windows NT 4.0

MSDTC 将群集 MSDTC 安装到第一个包含下列有效资源的组:IP 地址资源、网络名称资源和群集磁盘资源。这通常是 SQL Server 组。

Windows 2000

注意:如果将 SQL Server 配置为群集,则只需要一个 MSDTC 实例。安装 MSDTC 资源的建议的做法是将它安装在其自己的组中。该组应具有其自己的磁盘和 IP 资源。仅次于此做法的下一种好的做法是将 MSDTC 资源放到群集或定额组中。如果已经安装了 MSDTC 资源,而且 SQL Server 正常工作,无论它在哪一个组中,我们建议您不要移动该资源。如果群集尚未投入正式使用,我们建议您使用以下步骤将 MSDTC 资源移动到 SQL Server 组以外的组中。

对于 SQL Server 6.5 和 SQL Server 7.0 故障转移群集,如果必须将 MSDTC 移动到 SQL Server 组中,则应按照本文中“在 SQL Server 6.5 和 SQL Server 7.0 虚拟服务器上将 MSDTC 重置回典型安装的步骤”一节中的步骤操作。

移动 MSDTC 资源的步骤
  1. 启动“群集管理器”。删除为 Windows NT 4.0 创建的所有资源;这些资源通常为 MSDTC、MSDTC 网络名称和 MSDTC IP 地址。

    注意:默认情况下,Windows 2000 将 MSDTC 安装到群集组资源中,因此您只需在将 MSDTC 资源脱机后将其删除即可。
  2. 在所选的目标组(例如,SQL Server 组)中创建以下资源:
    1. MSDTC TCP/IP 地址,它取决于要创建 DTC 的驱动器。
    2. MSDTC 网络名称,它取决于 MSDTC TCP/IP 地址。
    3. 分布式事务处理协调器资源,它取决于 MSDTC 网络名称。
  3. 执行下列操作之一:
    • 将现有 Dtclog 文件夹从原来的驱动器移动到新的驱动器。
    • 删除原来的 Dtclog 文件夹,然后在要安装 MSDTC 的驱动器上创建一个名为 Dtclog 的文件夹(与第 2 步中的相同)。
  4. 在节点 A 上,在命令提示符下键入 comclust。完成这一操作后,再在节点 B 上重复此步骤。
  5. 在节点 A 上,在命令提示符下运行 msdtc -resetlog

    警告msdtc -resetlog 命令是一个危险的操作;执行此操作时,应确保没有活动的事务处理。
  6. 将所有 MSDTC 资源联机。
Windows Server 2003

如果您是 Windows Server 2003 用户,请参见 Microsoft 知识库中的以下文章:
301600 如何在 Windows Server 2003 群集上配置 Microsoft 分布式事务处理协调器

属性

文章编号: 294209 - 最后修改: 2006年1月23日 - 修订: 9.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 6.5 Enterprise Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
关键字:?
kbinfo KB294209
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com