如何在单个事务范围内处理与不同数据库的连接

时间:2010-12-07 08:19:56

标签: c# sql-server transactionscope data-access

我正在尝试从事务管理器内的两个不同数据库访问数据。 但是在第二个数据库上执行任何查询时,我得到“操作对事务状态无效”。错误

using(TransactionScope scope=new TransactionScope())
{
     Insert();//Inserts to database A
     Select();//Selects from database B - error while executing this statement
}

两个数据库都存在于同一服务器中。

1 个答案:

答案 0 :(得分:1)

在SQL Server 2005上,我认为这将需要在所有计算机上激活DTC(分布式事务处理协调器)。 2个不同的连接将导致事务从本地升级到分布式。

显然,这已在SQL Server 2008上修复:TransactionScope automatically escalating to MSDTC on some machines?您使用的是哪个版本的SQL Server?

请参阅A ConnectionScope class

Common Gotchas when using TransactionScope and MS DTC