在我们的应用程序中,我们使用的是 TransactionScope。我们的目标是不使用 MSDTC 服务,因为它比轻量级事务慢很多。
using (var transactionScope = new TransactionScope())
{
...
transactionScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
当连接到测试数据库时,我们不需要 MSDTC,但在同一台机器上执行的完全相同的代码在连接到生产或开发数据库时升级为使用 MSDTC。
开发数据库不是集群的,也不是命名实例。
所有都是 SQL Server 2008 (10.50.2500) 并且连接字符串完全相同,除了主机名。
数据库的设置似乎必须有所不同。关于这可能是什么的任何想法?
编辑
该事务用于保护两个不同表中的插入。我注意到还有两个调用导致了两个选择。这些不需要在交易中,所以我将它们移到了它之外。然后,所有三个数据库中都不再需要 MSDTC。问题解决了,但不知道是什么原因造成的。