【问题标题】:ADO.NET and working with different dbADO.NET 并使用不同的数据库
【发布时间】:2011-08-05 06:47:16
【问题描述】:

我需要实现从一个数据库读取数据并在另外两个数据库(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 的提交/回滚事务

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

  • 提交事务。

【问题讨论】:

  • db1事务成功,db2事务失败如何处理?

标签: c# ado.net


【解决方案1】:

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

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

这是另一个example

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 2010-09-12
  • 2010-09-25
  • 2010-09-25
  • 2023-03-19
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多