ADO.. NET和使用不同的数据库
本文关键字:数据库 NET ADO | 更新日期: 2023-09-27 18:04:39
我需要实现从一个数据库读取数据,并在另外两个数据库(Db2和Db3)中插入/更新数据。所有数据库均为SQL Server。
现在我使用下一个场景:
-
为我的源数据库打开连接并启动事务。
为Db2打开连接并启动事务1.2插入/更新记录
1.3 Commit/Rollback事务
2.1打开Db3的连接并启动事务
2.2插入/更新记录
2.3提交/回滚事务 -
将记录标记为导出源数据库
-
提交事务。
一切正常。但是,如果在1.2或2.2步骤中出现异常,则当前事务将回滚,但来自其他步骤的事务将保持提交。
如果步骤(1.2或2.2)有异常,步骤1.3和2.3,我如何实现场景也会回滚吗?
我不能为Db2和Db3使用一个事务,因为我有异常
事务没有与当前连接相关联或已完成。
任何想法?
谢谢,
更新:我解决了我的问题:现在我使用下一个场景:
-
为我的源数据库打开连接并启动事务。
1.1打开Db1的连接并启动事务
打开Db2的连接并启动事务1.4 DB2中Insert/Update
1.5 Db1的Commit/Rollback事务 Db2的Commit/Rollback事务 将记录标记为导出源数据库
提交事务。
您可以使用TransactionScope类在单个分布式事务中与多个数据库进行交互。
using (TransactionScope scope = new TransactionScope())
{
//put all logic here
scope.Complete();
}
下面是另一个例子