ADO.NET和使用不同的db

时间:2011-08-05 06:47:16

标签: c# ado.net

我需要实现从一个数据库读取数据并在另外两个数据库(Db2和Db3)中插入/更新数据。所有数据库都是SQL Server。

现在我正在使用下一个场景:

  • 打开连接并启动源数据库的事务。

    1.1打开连接并启动Db2的交易

    1.2插入/更新记录。

    1.3提交/回滚事务

    2.1打开连接并启动Db3的交易

    2.2插入/更新记录。

    2.3提交/回滚交易

  • 将记录标记为在源数据库中导出。

  • 提交交易。

一切正常。但是如果我在1.2或2.2步骤中有异常,则当前事务将被回滚,但来自其他步骤的事务将保持提交。

如果步骤(1.2或2.2)有异常,步骤1.3和2.3,我如何实现方案 还会回滚吗?

我不能为Db2和Db3使用一个事务,因为我有异常

  

该交易与当前连接无关   或者已经完成。

有什么想法吗?

谢谢,

更新: 我解决了我的问题: 现在我正在使用下一个场景:

  • 打开连接并启动源数据库的事务。

    1.1打开连接并启动Db1的交易

    1.2打开连接并启动Db2的交易

    1.3在DB1中插入/更新

    1.4在DB2中插入/更新

    1.5 Db1的提交/回滚事务

    1.6 Db2的提交/回滚事务

  • 将记录标记为在源数据库中导出。

  • 提交交易。

1 个答案:

答案 0 :(得分:1)

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

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

这是另一个example