分布式事务处理协调器

问题描述:

我正在跨多个系统进行数据库事务(插入记录)。所以,我决定在.net中使用System.Transaction命名空间。我在两个系统上配置了MSDTC(但我不知道我是否正确配置)。我的事务有两个插入查询一个将在本地系统执行。另一个将在本地网络中的某个其他系统上执行。 第一次插入查询成功,但第二次提出错误,如: Message =“该事务已被隐式或显式提交或中止。”分布式事务处理协调器

请帮助在这种情况下结束。


这里是我的代码

using (TransactionScope txSc = new TransactionScope()) 
    { 
     //vrm = new VolatileRM(); 
     //vrm.SetMemberValue(3); 
     try 
     { 
      using (SqlConnection cn = new SqlConnection(connStr1)) 
      { 
       SqlCommand cmd = cn.CreateCommand(); 
       cmd.CommandText = "Insert into empdetail Values ('YYY')"; 
       cn.Open(); 
       cmd.ExecuteNonQuery(); 
       cn.Close(); 
      } 
      using (SqlConnection cn = new SqlConnection(connStr)) 
      { 
       SqlCommand cmd = cn.CreateCommand(); 
       cmd.CommandText = "Insert into stu Values ('23','senthil')"; 
       cn.Open(); 
       cmd.ExecuteNonQuery(); 
       cn.Close(); 
      }      
      txSc.Complete(); 
     } 
     catch (Exception e) 
     { 
      txSc.Dispose(); 
     } 

    } 
+0

你可以编辑我包括包含整个事务的代码。 – Fung 2009-04-28 06:17:06

首先检查DTC实际运行(在本地和远程系统),然后尝试都DTC的身份验证设置为“无名氏”,看它是否是一个权限问题。

此外,请检查远程和本地计算机上的防火墙设置。

看看这个常见问题:Distributed Transaction Coordinator(MSDTC) and Transaction FAQ

Configuring MS DTC Services

与此相关的SO问题:HRESULT: 0x8004D00E using TransactionScope - C#

+0

谢谢,我会这样做 – Partha 2009-04-28 06:38:40