【发布时间】:2011-06-06 07:28:09
【问题描述】:
我必须维护两个不同数据库之间的事务。如果 Database1 发生任何错误,我需要回滚,那么 database2 中的所有更改都应该回滚。
我的 web.config 文件中有两个连接字符串。
【问题讨论】:
标签: asp.net
我必须维护两个不同数据库之间的事务。如果 Database1 发生任何错误,我需要回滚,那么 database2 中的所有更改都应该回滚。
我的 web.config 文件中有两个连接字符串。
【问题讨论】:
标签: asp.net
答案取决于您是需要两个数据库服务器实例之间的分布式事务,还是单个实例中两个数据库之间的事务。在第一种情况下,您需要像 MSDTC 这样的事务管理器,但在第二种情况下,数据库服务器应该能够自己完成这项工作。
TransactionScope 将在必要时将事务升级到 MSDTC。这方面的规则有些微妙。如果这两个数据库位于单个 SQL Server 2008 实例上,则不需要 MSDTC。
【讨论】:
您可以使用TransactionScope 类:
using(var tx = new TransactionScope())
{
// TODO: your DB queries here
tx.Complete();
}
【讨论】: