2024年3月28日发(作者:)

SQL Server 分布式数据库MSDTC 分布式事务错误和解决方法

一、问题现象

假如分布式事务的客户端和服务器端(可能N个)不在同一台服务器上,如分别为应用

程序服务器 和 数据库服务器,经常会出现一下错误:

① 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下

SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序,

error: 40 - 无法打开到 SQL Server 的连接)。

② 事务已被隐式或显式提交,或已终止。

③ 该伙伴事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自

HRESULT:0x8004D025)。(TransactionScope异常)

④ [COMException (0x8004d00e):此事务已明地或暗地被确认或终止 (异常来自

HRESULT:0x8004D00E)]。(MSDTC 分布式事务错误)

⑤ Import of MSDTC transaction failed: Result Code = 0x8004d023. (MSDTC

安全性配置问题)

二、解决方法

遇到以上的问题或SQL Server分布式的问题,请按照以下步骤设置,问题应该可以

得到解决。可能有些步骤对您来说是多余的,但求全不求漏。

1. 启动MSDTC服务。

MSDTC简介:MSDTC是Microsoft Distributed Transaction Coordinator的简称,

即微软分布式事务协调器,描述:协调跨多个数据库、消息队列、文件系统等资源管理器

的事务。如果停止次服务,则不会发生这些事务。如果禁用此服务,显式依赖此服务的其

他服务将无法启动。

MSDTC启动方法:

①“开始”|“运行”,输入“”,或者“控制面板”|“管理工具”|“服

务”,打开“服务”窗口,在名称中找到“Distributed Transaction Coordinator”,将

其启动。

②“开始”|“所有程序”|“Microsoft SQL Server”|“服务管理器”,打开“SQL

Server 服务管理器”窗口,选中“Distributed Transaction Coordinator”服务,将其

启动。

2. 设置MSDTC组件。

① 检查操作系统是否安装DTC组件。XP默认安装,Win2003默认不安装。安装步

骤如下:

a. “开始”|“控制面板”|“添加/删除程序”|“添加/删除Windows组件”,选择

“应用程序服务器”,单击“详细信息”,选择“启用网络DTC访问”,单击“确定”|“下