MSDTC 分布式事务错误解决

原创 2007年09月18日 15:50:00

  最近 在做项目的过程中总会遇到MSDTC的错误,网上也很多人问到这个问题,错误信息大约描述为:

[COMException (0x8004d00e): 此事务已明地或暗地被确认或终止 (异常来自 HRESULT:0x8004D00E)]
   System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32& cookieIndex, UInt32& cookieSize, CoTaskMemHandle& cookieBuffer) +0
   System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) +237

[TransactionException: 事务已被隐式或显式提交,或已终止。]
   System.Transactions.Oletx.OletxTransactionManager.ProxyException(COMException comException) +412
   System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) +292
   System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) +527
   System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) +801124
   System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) +795031
   System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) +30
   System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1205
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +82
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
   System.Data.SqlClient.SqlConnection.Open() +111

一般都是使用.net 2.0 下的Transactionscope引起的,通过搜索,大部分给出的答案是:

win2003缺省禁用远程/网络事务,启用的步骤如下:    
  启用网络   DTC   访问的步骤    
  1.   单击“开始”,指向“控制面板”,然后单击“添加/删除程序”。    
  2.   单击“添加/删除   Windows   组件”。    
  3.   选择“应用程序服务器”,然后单击“详细信息”。    
  4.   选择“启用网络   DTC   访问”,然后单击“确定”。    
  5.   单击“下一步”。    
  6.   单击“完成”。    
  7.   停止分布式事务协调器服务,然后重新予以启动。    
  8.   停止参与分布式事务的任何资源管理器服务(如   Microsoft   SQL   Server   或   Microsoft   Message   Queue   Server),然后重新予以启动。     
   

这样做下来,我相信大部分人还是不行,再经过一番搜索,原来还需要两台机器能够ping的通hostname,这里还需要设置%windir%/WinNT/System32/Drivers/下的host文件,写上IP和HostName的对应信息,如

192.168.0.6 myhostname

请确保这一点: 两台机器能够ping通机器名(不是IP)

这里要特别注意你的防火墙,它有可能能让你ping不同机器名,更可能让两台机器之间禁止RPC服务,可见下面的一段资料:


If pinging Server2 from Server1 by NetBios name fails, or if pinging Server2 from Server1 by NetBios name succeeds but the DTCPing test shows RPC communication still fails, it is possible that Port 135 (the End Point Mapper, or EPM) has not been opened bi-directionally on the firewall. Check the firewall to make sure that the EPM is open in both directions. At this point, a Network Monitor trace may help to pinpoint the problem.

你也可以使用DTCping工具来测试是否可以在两台机器之间使用MSDTC,并帮你分析原因,下载地址可以到微软的站点

 

WCF MSDTC 基础提供程序在OPEN上失败解决方法

我在WPF开发过程中,通过WCF访问数据库时出现这个问题:基础提供程序在OPEN上失败,网上说是连错数据库,但我的解决不了,我的解决方法是在控制面板--管理工具--组件服务--我的电脑--Distri...
  • bartidler
  • bartidler
  • 2010年12月08日 16:06
  • 14848

ORA-01591: 锁被未决分布式事务处理解决方案

现场报有一个功能走不下去,后台日志报错:java.sql.SQLException: ORA-01591: 锁被未决分布式事务处理 657.7.39336 持有。    解决方案:    rollba...
  • guogang83
  • guogang83
  • 2015年06月17日 14:54
  • 3651

错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务

在联机文档中是这样描述MS DTC的: Microsoft 分布式事务处理协调器 (MS DTC) 是一个事务管理器,它允许客户端应用程序在一个事务中包含多个不同的数据源。MS DTC 协调在所有已...
  • ArvinStudy
  • ArvinStudy
  • 2012年04月18日 11:09
  • 3092

无法启动分布式事务的解决方法

当运行分布式事务对 ANSI,并在从 SQL Server, 您可能收到错误消息, 它类似于以下:服务器: 消息 7391, 级别 16, 状态 1, 行 1因为 OLEDB 提供程序 SQLOLE...
  • Flora_qxy
  • Flora_qxy
  • 2006年12月07日 14:37
  • 5761

SQL Server分布式事务配置(MSDTC)(远程数据库更新)

如果你也遇到了类似于OLE DB "SQLNCLI" "未知" "分布"等错误时,请现尝试使用这个地址的方法进行处理,如果无效的话在继续后面的方法http://blog.csdn.net/hb_gx/...
  • olony
  • olony
  • 2009年01月08日 10:03
  • 10478

已禁用对分布式事务管理器(MSDTC)的网络访问。

配置msdtc需要分别配置数据库服务器和开发机,因为只有两个机器都配置正确了,分布式事务才不会报乌七八糟的错误。如果数据库服务器和开发机是同一台机器,那就不用看本文了,因为不存在分布式事务的问题。 ...
  • knight0513
  • knight0513
  • 2011年12月29日 16:10
  • 969

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。 与基础事务管理器的通信失败。 .net 代码里 写事务代码

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。 与基础事务管理器的通信失败。    .net 代码...
  • wzh1215
  • wzh1215
  • 2017年11月03日 19:59
  • 313

“已禁用分布式事务管理器的网络访问”的解决方法

问题描述 写了一个客户端-服务器-数据库的三层应用程序。程序进行调试的时候,客户端和服务端代码都是在本机上运行,然后服务器代码连接测试数据库服务器中的数据库。在进行某些操作的时候,客户端窗口会报“已禁...
  • gc_2299
  • gc_2299
  • 2017年11月12日 20:03
  • 77

MSDTC 分布式事务协调程序"集群"

Microsoft Distributed Transaction Coordinator(Microsoft分布式事务协调程序,MSDTC)现在只需配置一次,即可被复制到所有节点上。优点&;#822...
  • hzf100
  • hzf100
  • 2008年05月07日 09:56
  • 1413

MSDTC 分布式事务无法启动

错误消息:---------------------------服务---------------------------Windows 不能在 本地计算机 启动 Distributed Tr...
  • inelm
  • inelm
  • 2006年03月28日 18:20
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSDTC 分布式事务错误解决
举报原因:
原因补充:

(最多只允许输入30个字)