3

我们在一台机器上遇到问题,并显示错误消息:

“服务器 XXX 上的 MSDTC 不可用。”

该代码使用TransactionScope来包装一些 LingToSql 数据库代码;交易中还有一些原始的 Ado.net。

由于只访问了一个 sql 数据库(2005),为什么要使用分布式事务呢?

(我不想知道如何启用 MSDTC,因为代码需要在当前设置的服务器上运行)

4

1 回答 1

7

当您的事务使用多个数据库连接时,这几乎总是会发生。因此,假设您要更新两个表。您可以使用一个连接更新第一个表,但使用不同的第二个连接更新第二个表。这将导致事务升级到 MSDTC,即使使用 TransactionScope 对象也是如此。

我们解决这个问题的方法是在执行事务时,我们使用单个数据库上下文对象进行所有写入。这消除了升级。自从这样做以来,我们从未出现过 MSDTC 消息。

兰迪

于 2010-04-27T14:20:17.113 回答