首页 > 后端开发 > C++ > 为什么我的 TransactionScope 在某些机器上升级到 MSDTC,而在其他机器上却没有?

为什么我的 TransactionScope 在某些机器上升级到 MSDTC,而在其他机器上却没有?

Mary-Kate Olsen
发布: 2025-01-26 18:21:09
原创
934 人浏览过

Why Does My TransactionScope Escalate to MSDTC on Some Machines But Not Others?

transactionscope:MSDTC上升不一致的机器

>

我们的项目使用TransactionsCope来可靠数据访问,但是我们遇到了不一致的行为。一些开发人员在没有MSDTC的情况下无缝工作,而另一些开发人员则收到“ [服务器]上的MSDTC是不可用的”错误。 这项调查探讨了为什么Transactionscope在某些机器上升级为MSDTC,而不是其他机器。

> TransactionsCope理想地避免在客户端机器上避免使用MSDTC。但是,几种场景可以触发DTC升级:

    >多个耐用资源缺乏单相通知(排除在外)。
  • >
  • >与同一数据库的多个连接(由代码审查排除)。
  • >交叉申请域或过程交易范围(排除)。
  • 但是,代码
  • 包含嵌套连接开口,与单个开放连接的断言相矛盾。这种嵌套的连接是受影响机器上升级问题的有力嫌疑人。
> SQL Server版本扮演着至关重要的角色。 SQL Server 2008改进了交易的处理,允许在不升级的情况下在TransactionsCope(在不同时间打开)中多个连接。 但是,SQL Server 2005缺乏此功能,并使用第二个连接升级为DTC。

至关重要的是,没有升级问题的开发人员使用SQL Server 2008,而遇到错误的开发人员则使用SQL Server 2005。这证实了SQL Server版本与MSDTC升级之间的可疑相关性。 >对于SQL Server 2005,单个长寿命的全局连接对于TransactionsCope正确运行是必要的。这与最佳实践相冲突(仅在需要时打开连接并及时关闭它们)。 除非可以接受持续连接的性能开销,否则使用SQL Server 2005使用TransactionsCope可能不是最佳的。

以上是为什么我的 TransactionScope 在某些机器上升级到 MSDTC,而在其他机器上却没有?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板