首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板