分布式事务处理协调器
问题描述:
我正在跨多个系统进行数据库事务(插入记录)。所以,我决定在.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();
}
}
答
首先检查DTC实际运行(在本地和远程系统),然后尝试都DTC的身份验证设置为“无名氏”,看它是否是一个权限问题。
此外,请检查远程和本地计算机上的防火墙设置。
看看这个常见问题:Distributed Transaction Coordinator(MSDTC) and Transaction FAQ
+0
谢谢,我会这样做 – Partha 2009-04-28 06:38:40
你可以编辑我包括包含整个事务的代码。 – Fung 2009-04-28 06:17:06