簡體   English   中英

MSDTC事務管理器無法使用AmbientTransaction推送事務

[英]The MSDTC transaction manager was unable to push the transaction using AmbientTransaction

我有一個BizTalk解決方案,它將調用存儲過程來查詢和更新表。 顯然,每次在負載平衡服務器中測試解決方案時,我都會遇到此錯誤。

適配器無法通過URL“ mssql:// server // StoredProc?”發送消息以發送要發送到端口SQLAdapter_Sendport的消息。它將在為此發送端口指定的重試間隔后重新發送。

詳細信息 :System.Transactions.TransactionManagerCommunicationException:與基礎事務管理器的通信失敗。

System.Runtime.InteropServices.COMException:由於通信問題,MSDTC事務管理器無法將事務推送到目標事務管理器。 可能的原因是:存在防火牆,並且MSDTC進程沒有例外;兩台計算機無法通過其NetBIOS名稱相互找到對方;或者未為兩個事務管理器之一啟用對網絡事務的支持。

來自HRESULT的異常:0x8004D02A)
在System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize,Byte []行蹤,Int32&cookieIndex,UInt32&cookieSize,CoTaskMemHandle&cookieBuffer)
在System.Transactions.TransactionInterop.GetExportCookie處(交易事務,Byte []行蹤)
---內部異常堆棧跟蹤的結尾---

我讀過一些文章,我應該如下設置DTC屬性。 我已經在BizTalk和SQL Server中都設置了這些。

在此處輸入圖片說明

此外,必須在Windows防火牆中添加DTC。

在此處輸入圖片說明

最后,如果將“發送端口”屬性中的useAmbientTransaction設置為True,我將繼續遇到上述錯誤。

在此處輸入圖片說明

但是,如果將useAmbientTransaction設置為False,則消息在SQL中成功。

我讀過一些文章,Microsoft不建議您將useAmbientTransaction設置為False,特別是如果存儲過程中涉及Update和Delete時。 但是我的解決方案在存儲過程中使用了刪除和更新,因此我需要將useAmbientTransaction設置為True。 但是,如果這樣做,我總是遇到錯誤“ MSDTC事務管理器無法將事務推送到目標...”

請提出任何可能的解決方案。

如果要連接到AlwaysOn可用性組中的數據庫,則需要關閉useAmbientTransaction,因為AlwaysOn不支持MSDTC(SQL Server 2016除外)。

SQL Server 2014 跨數據庫事務不支持同一篇文章, 數據庫鏡像或AlwaysOn可用性組(SQL Server)

用於始終在線的可用性組和數據庫鏡像的 SQL Server 2016 跨數據庫事務和分布式事務(SQL Server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM