MSTDC服务的应用及相关错误的解决方案(转载)
病状:
在作为服务器群集一部分的基于 Microsoft Windows 2000 Server 的计算机上,收到了以下错误信息:
An error occurred while processing the last operation.Error code 8004E00F - COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator.
您无法启动 Microsoft 分布式事务处理协调器 (MSDTC) 服务。
应用程序事件日志中可能会记录以下事件:
事件 ID:4099
类型:错误
来源:COM+
描述:
运行时环境无法为支持事务处理组件所需的事务进行初始化。请确保 MS DTC 正在运行。(DtcGetTransactionManagerEx{}:hr = 0x8004d01b
事件 ID:4097
类型:错误
来源:MSDTC
描述:
MS DTC 启动时使用以下设置:
安全配置 (OFF = 0 和 ON = 1):
事务的网络管理 = 1,
网络客户端 = 0,
使用本机 MSDTC 协议的分布式事务 = 1,
事务 Internet 协议 (TIP) = 0, XA
事务 = 1
事件 ID:4395
类型:错误
来源:MSDTC
描述:
MSDTC 检测到本地注册表中的 MSDTC 相关信息与共享群集注册表中的不同。错误明细: d:\nt\com\com1x\dtc\shared\mtxclu\mtxclusetuphelper.cpp:541,
CmdLine:C:\WINNT\System32\msdtc.exe,PID: 796
类型:错误
来源:MSDTC
描述:
MSDTC 检测到本地注册表中的 MSDTC 相关信息与共享群集注册表中的不同。错误明细: d:\nt\com\com1x\dtc\shared\mtxclu\mtxclusetuphelper.cpp:541,
CmdLine:C:\WINNT\System32\msdtc.exe,PID: 796
事件 ID:4384
类型:错误
来源:MSDTC
描述:
由于安装程序没有配置为在群集中运行,所以 MS DTC 无法启动。请运行 comclust.exe 并重新启动 MS DTC。错误明细: d:\nt\com\com1x\dtc\shared\mtxclu\mtxclusetuphelper.cpp:668,
CmdLine:C:\WINNT\System32\msdtc.exe,PID:796
原因:
在满足以下条件时,就会发生上述情况:
- 您在基于 Windows 2000 Server 的群集中将 MSDTC 服务安装为非群集资源。
- 您安装了 MS04-012 软件更新。
注意:Windows 2000 后 Service Pack 4 COM+ 修复程序总成包 27 中包含 MS04-012 软件更新。
MS04-012 软件更新包含对 MSDTC 代理 (Msdtcprx.dll) 的更改。软件更新体现了让 MSDTC 服务配置为群集资源的要求。第一次安装更新后,MSDTC 服务可以在本地群集中启动,这是因为群集服务启动前初始化了该服务。但是,如果在群集服务运行后停止了 MSDTC 服务,则在重新启动服务器之前,您无法重新启动 MSDTC。
有关 MS04-012 更新的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822473 当 SQL Server 的单独实例处于群集环境中时出现“MSTDC Is Unavailable”(MSTDC 不可用)错误
注意:如果将 MSDTC 安装为非群集资源,则此配置会产生孤立事务。如果发生群集故障转移,孤立事务会导致数据损坏。我们不建议也不支持此配置。 默认情况下,Microsoft Windows Server 2003 需要将 MSDTC 安装为群集资源。
解决方案:
要解决此问题,请按照下列步骤操作:
警告:注册表编辑器使用不当可能导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
- 使用终端服务客户端或在控制台连接到全部两个节点。
- 将所有资源移动到一个节点。此节点成为主动节点。
- 在全部两个节点上,使用注册表编辑器删除以下注册表子项:
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
-
HKEY_CLASSES_ROOT\CID
- 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
- 找到然后右键单击下面的注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
- 单击“删除”。
- 单击“是”确认删除。
- 对于
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC子项和HKEY_CLASSES_ROOT\CID子项,重复步骤 a 到 d。
- 退出注册表编辑器。
-
- 在主动节点上,在仲裁驱动器上创建“DTClog”文件夹。例如,创建 Q:\DTClog 文件夹。
- 如果在 Windows 资源管理器中或命令提示符下看不到仲裁驱动器,请使用 DCOMCNFG 实用工具 (Dcomcnfg.exe) 验证配置。 要使用 DCOMCNFG 实用工具,请执行下列步骤:
注意:如果安装了 Oracle,此过程会重置值并锁定管理员帐户和系统帐户。- 依次单击“开始”和“运行”,键入 dcomcnfg,然后单击“确定”。
- 单击“默认安全设置”选项卡。
- 在“默认访问权限”下,单击“编辑默认值”。
- 验证以下默认访问权限:
- SYSTEM 允许访问
- INTERACTIVE 允许访问
- Administrators 允许访问
注意:您还会看到群集管理员帐户的帐户。此帐户是管理员组的一部分。例如,如果群集管理员帐户名为 CLUSADMIN,则您会看到“CLUSADMIN 允许访问”。 - 完成后,单击“确定”。
- 在“默认启动权限”下,单击“编辑默认值”。
- 对下列权限进行验证:
- SYSTEM 允许启动
- INTERACTIVE 允许启动
- Administrators 允许访问
- 完成后,请单击“确定”两次。
- 如果更改 DCOMCNFG 实用工具设置,必须注销,然后登录以获取访问权限。
- 在全部两个节点上,停止 MSDTC 服务。为此,在命令提示符下键入以下命令,然后按 Enter 键:
net stop msdtc验证是否显示了一条指出 MSDTC 服务已成功停止的消息。
- 在全部两个节点上,删除 MSDTC。为此,在命令提示符下键入以下命令,然后按 Enter 键:
msdtc -uninstall
- 在全部两个节点上,验证“分布式事务处理协调器”服务已从“服务”管理单元中删除。 要启动“服务”管理单元,请依次单击“开始”、“运行”,键入 services.msc,然后单击“确定”。
- 在主动节点和被动节点上,将 MSDTC 安装为群集资源。首先,在主动节点上安装 MSDTC。然后,在被动节点上安装 MSDTC。为此,请按照下列步骤操作:
- 在主动节点上,在命令提示符下键入以下命令,然后按 Enter 键:
comclustCOM 群集向导 (Comclust.exe) 完成运行后,程序返回到命令提示。不要关闭命令提示。
- 在被动节点上,在命令提示符下键入以下命令,然后按 Enter 键:
comclustCOM 群集向导完成运行后,程序返回到命令提示。
- 在被动节点上关闭命令提示。必须首先在被动节点上关闭命令提示。
- 然后在主动节点上关闭命令提示。
290624 如何在 Windows 2000 群集环境中配置 MSDTC - 在主动节点上,在命令提示符下键入以下命令,然后按 Enter 键:
- 验证没有出现错误信息且 MSDTC 服务已安装。另外,验证 MSDTC 资源已添加到群集组中。
注意:如果收到以下错误信息,请重新启动所有节点,然后重试步骤 9:
C:\Documents and Settings\Administrator>comclust Setting up MS DTC.Setup found that the current configuration of the cluster does not contain any resource groups in which the MS DTC resource can be created.Setup of MS DTC requires that the cluster contain at least one resource group that contains both a network name resource and a shared disk resource.Setup also requires that this resource group be owned by the first node in the cluster on which setup is run.Please re-run setup after the appropriate changes to the cluster configuration have been made. - 确保 MSDTC 群集资源工作正常。为此,请尝试使用下面的方法:
- 验证可以将群集组从一个节点移动到另一个节点,然后可以再移回来。
- 验证可以无错误地运行“组件服务”管理单元。为此,请单击“开始”,指向“程序”,指向“管理工具”,然后单击“组件服务”。在“组件服务”管理单元中,依次展开“组件服务”、“计算机”、“我的电脑”,然后展开“COM+ 应用程序”。
-
使用事件查看器检查系统事件日志和应用程序事件日志,以查找相关错误信息。