您的位置:首页 > 其它

解决“COM+ 无法与 Microsoft 分布式事务协调程序交谈”的问题

2004-12-01 15:30 771 查看
这两天尝试使用MS DTC,使用两台电脑安装了两个SQL Server服务器,并编写了一个事务处理组件BankService:

[Transaction(TransactionOption.Required)]
    public class BankService : System.EnterpriseServices.ServicedComponent
            public BankService()
                }
        
        public void DrawMoneyFromA(long amount)
                    SqlConnection cn = new SqlConnection("Data Source=ekeen;uid=sa;pwd=sa;initial catalog=bank");
            SqlCommand cmd = new SqlCommand("update accounts set amount=(amount " + amount.ToString()  + ") where accountid='A'",cn);
            try
                            cn.Open();
                cmd.ExecuteNonQuery();
            }
            catch(Exception ex)
                            throw ex;
            }
            finally
                            cn.Close();
            }
            

        }

        public void DepositMoneyToB(long amount)
                    SqlConnection cn = new SqlConnection("server=(local);integrated security=true;initial catalog=bank");
            SqlCommand cmd = new SqlCommand("update accounts set amount=amount + " + amount.ToString()  + " where accountid='B'",cn);
            cn.Open();
            cmd.ExecuteNonQuery();
            cn.Close();
        }

        [AutoComplete]
        public void TestDTC()
                    DrawMoneyFromA(100);
            DepositMoneyToB(100);
            
            
        }
    }

可是当我调用TestDTC()方法测试DTC时,执行到方法DrawMoneyFromA中的cn.Open方法时却抛出异常“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”,始终没有调试过去,没发现原因


后来,我在组件配置中右击“我的电脑”,选择属性时发现选项卡MSDTC中有一个默认协调器的选项,结果我想是不是应该指定一台电脑作为协调器,于是我就输入了另一台测试机的名字ekeen并确定。结果恶梦就产生了

:每次执行事务的时候都会出现错误“COM+ 无法与 Microsoft 分布式事务协调程序交谈”。我想应该是刚才配置错误,可是我当我想再次配置MSDTC的时候,我发现我再也打不开那个选项卡了~~~。
无奈之下就去看了一下事件查看器,发现有一个COM+错误,结果根据信息搜索到了一篇KB文章http://support.microsoft.com/?kbid=867520 ,里面提到了解决方法:
1、删除注册表中的键:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
HKEY_CLASSES_ROOT\CID
2、停止MSDTC服务:net stop msdtc
3、卸载MSDTC服务:msdtc -uninstall
4、重新安装MSDTC服务:msdtc -install
5、重新启动电脑

问题解决了,可以配置MSDTC了,可是“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”的问题还是没解决,不知道谁能帮我一下,谢谢了。

我的操作系统是Windows 2003,数据库是SQL Server 2003 + Sp3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: