日期:2014-05-17  浏览次数:20446 次

请教跨数据库事务的问题
现在有两张表,分别在不同的数据库,table1在db1数据库中,table2在db2数据库中,现需要在这两张表中做插入事务操作,我在网上看了下,可以通过分布式事务进行提交,具体代码如下:
C# code
try            {                 using (TransactionScope scope = new TransactionScope())                 {                    //更新northwind数据库的Employees表                                         using (SqlConnection conOne = new SqlConnection("server=.;uid=sa;pwd=123;database=northwind"))                     {                         conOne.Open();                         SqlCommand command = new SqlCommand("update Employees set lastname='chen' where employeeid='1'", conOne);                         int i = command.ExecuteNonQuery();                     }                    //更新pubs数据库的jobs表                                      using (SqlConnection conTwo = new SqlConnection("server=.;uid=sa;pwd=123;database=pubs"))                     {                         conTwo.Open();                         SqlCommand command = new SqlCommand("update jobs set job_desc='chen' where job_id='1'", conTwo);                         int i = command.ExecuteNonQuery();                     }                     scope.Complete();  //提交事物                                }             }             catch (Exception ex)       //发生异常后自动回滚                         {                 //throw;                        }


但是程序运行到conTwo.Open(); 的时候就报“卸载Appdomain 时出错。 (异常来自 HRESULT:0x80131015)”的错误,请高手指教下这是为什么?
还有一点我知道可以通过存储过程去实现跨库之间的事务操作,但是我想通过c#代码的方式去实现,请问还有其他方法吗?

------解决方案--------------------
数据库建同义词 ,可以不需要 跨数据库 这样插入的。

你的那例子有些死板
------解决方案--------------------
连接的代码很工整,也看不出什么错C#

你有没试过,不执行ONE,就是connection one, remark掉

只执行Two,会有这个问题么。

如果没有,说明2个connection有冲突