代码之家  ›  专栏  ›  技术社区  ›  Ian Ringrose

当我只使用LinqToSQL和ADO.NET时,为什么TransactionScope使用分布式事务

  •  3
  • Ian Ringrose  · 技术社区  · 15 年前

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

    “服务器xxx上的msdtc不可用。”

    代码使用的是 交易范围 包装一些lingtosql数据库代码;事务内部还有一些原始的ado.net。

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

    (我不想知道如何启用msdtc,因为代码需要使用当前设置在服务器上工作)

    1 回复  |  直到 15 年前
        1
  •  7
  •   Randy Minder    15 年前

    当事务使用多个数据库连接时,几乎总是会发生这种情况。那么,假设您正在更新两个表。您可以使用一个连接更新第一个表,但使用另一个连接更新第二个表。这将导致事务升级到msdtc,甚至使用TransactionScope对象。

    我们解决这个问题的方法是在执行事务时,对所有的写入操作使用一个数据库上下文对象。这消除了升级。这样做之后,我们就再也没有出现过MSDTC消息。

    兰迪