首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一个关于分布式事务的有关问题

2012-02-12 
请教一个关于分布式事务的问题.想实现一个简单的分布式事务,代码如下:C# codestring connectionStringServ

请教一个关于分布式事务的问题.
想实现一个简单的分布式事务,代码如下:

C# code
string connectionStringServer = ConfigurationManager.AppSettings["ConnectionStringServer"].ToString();        string connectionStringLocal = ConfigurationManager.AppSettings["ConnectionStringLocal"].ToString();        int returnValue = 0;        string strCommand = "insert into [Users](UserName,UserPhone) values(@name,@phone)";        StringWriter writer = new StringWriter();        using (TransactionScope scope = new TransactionScope())        {            using (SqlConnection cn1 = new SqlConnection(connectionStringServer))            {                try                {                    cn1.Open();                    SqlCommand cmd1 = new SqlCommand(strCommand, cn1);                    cmd1.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text;                    cmd1.Parameters.Add("@phone", SqlDbType.VarChar).Value = txtPhoneNumber.Text;                    returnValue = cmd1.ExecuteNonQuery();                    writer.WriteLine("插入远程数据库表时影响行数:{0}", returnValue);                    using (SqlConnection cn2 = new SqlConnection(connectionStringLocal))                    {                        try                        {                            cn2.Open();                            SqlCommand cmd2 = new SqlCommand(strCommand, cn2);                            cmd2.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text;                            cmd2.Parameters.Add("@phone", SqlDbType.VarChar).Value = txtPhoneNumber.Text;                            returnValue = 0;                            returnValue = cmd2.ExecuteNonQuery();                            writer.WriteLine("插入本地数据库表时影响行数:{0}", returnValue);                                                    }                        catch (Exception ex)                        {                            writer.WriteLine("插入本地数据库表时影响行数:{0}", returnValue);                            writer.WriteLine("插入本地数据库表异常信息:{0}", ex.Message);                        }                    }                }                catch(Exception ex)                {                    writer.WriteLine("插入远程数据库表时影响行数:{0}", returnValue);                    writer.WriteLine("插入远程数据库表异常信息:{0}", ex.Message);                }            }            scope.Complete();        }        if (returnValue > 0)        {            writer.WriteLine("事务已经提交.");        }        else        {            writer.WriteLine("事务已经回滚.");        }        Response.Write(writer);

当执行的时候出现"已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问"异常,两边都是SQL Server 2000,而且都已经设置过了MSDTC,但始终没有解决问题,查了一下MSDN,原文是"只有一起使用 SQL Server 的 .NET Framework 数据提供程序 (SqlClient) 和 SQL Server 2005 时,才可以使用可提升事务。",请问各位问题到底出在哪里.

[解决办法]
还解决不了,帮你顶下,学习了!!!!
[解决办法]
探讨
还解决不了,帮你顶下,学习了!!!!

[解决办法]
这个问题我想我可以帮你.我遇到跟你类似的问题,当时搞得焦头烂额.

1.两台计算机启用msdtc,这个你已经做了.
2.在msdtc那里,你仔细查看网络安全那块,顺便选择好允许入站和出站
3.两台计算机的工作组要一致,IP尽量靠在一起(这个很奇怪,如果IP一台是2,另一台是3,相差不大的情况下,工作组名称可以不一致)
4.应该已经解决了.
你可以到网上去down一个,检测两台计算机的msdtc是否设置好的工具测试.这个软件的名称我忘记了.

热点排行