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事务
  • 将记录标记为导出源数据库

  • 提交事务。

ADO.. NET和使用不同的数据库

您可以使用TransactionScope类在单个分布式事务中与多个数据库进行交互。

using (TransactionScope scope = new TransactionScope())
{
  //put all logic here
  scope.Complete();
}

下面是另一个例子