现在有两张表,分别在不同的数据库,table1在db1数据库中,table2在db2数据库中,现需要在这两张表中做插入事务操作,我在网上看了下,可以通过分布式事务进行提交,具体代码如下:
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#代码的方式去实现,请问还有其他方法吗?
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#代码的方式去实现,请问还有其他方法吗?
解决方案 »
- 自定义用户控件无法更新(调试单步执行状态可以更新,直接运行不行)
- rad 和 dv控件莫名其妙的消失了?
- crystal report使用总结。
- [VS2005]动态表添加LinkButton按钮定义CommandEventHandler,点击不触发事件!高手帅哥都来看看!
- 请大家说说.cs文件删掉可以吗?
- 最后20分收集三层结构的相关教材和源码。
- sharepoint server2010 配置向导异常 ,未能连接到配置数据库 管理 帖子编辑
- sql server 2005怎么用啊
- asp.net视频文件后缀名删除了,怎么在页面上播放 ?
- 提交表单到web service 问题
- (菜鸟求解) 未将对象引用设置到对象的实例
- 网页中如何播放插入局域网地址的swf 如\\192.168.1.3\q\q.swf
http://www.cnblogs.com/pengwenbing/archive/2010/08/30/1812482.html
以下示例首次创建将在此后的示例中使用的同义词。USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks.Person.AddressType;
GO
以下示例将行插入到由 MyAddressType 同义词引用的基表。USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO
这样写跟平时插入同库 数据是一样的。底层不需要你改变。上面展示 两库 的操作