我需要实现从一个数据库读取数据并在另外两个数据库(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的提交/回滚事务
将记录标记为在源数据库中导出。
提交交易。
答案 0 :(得分:1)
您可以使用TransactionScope类与单个分布式事务中的多个数据库进行交互。
using (TransactionScope scope = new TransactionScope())
{
//put all logic here
scope.Complete();
}
这是另一个example