2016-10-11 70 views
0

我有一個BizTalk解決方案可以調用將查詢和更新表的存儲過程。顯然,我每次在負載平衡的服務器上測試我的解決方案時遇到此錯誤。MSDTC事務管理器無法使用AmbientTransaction推送事務

適配器無法傳輸郵件將發送端口SQLAdapter_Sendport」與URL‘MSSQL:?//服務器// StoredProc’這將發送端口爲這個指定的重試間隔後會重新

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

System.Runtime.InteropServices.COMException:該MSDTC事務管理器無法推動交易到目的地事務管理器由於通信問題。可能的原因是:存在防火牆,並且它沒有MSDTC進程的例外情況,兩臺計算機無法通過其NetBIOS名稱找到彼此,或者沒有爲兩個事務管理器之一啓用對網絡事務的支持。從HRESULT

例外:0x8004D02A)
在System.Transactions.Oletx.ITransactionShim.Export(UInt32的whereaboutsSize,字節[]下落,的Int32 & cookieIndex,UInt32的& cookieSize,CoTaskMemHandle & cookieBuffer)
在System.Transactions的。 TransactionInterop.GetExportCookie(交易成交,字節[]下落)內部異常堆棧跟蹤的
- 完 -

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

enter image description here

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

enter image description here

最後一點,如果在發送端口屬性useAmbientTransaction設置爲True我一直遇到上面所說的錯誤。

enter image description here

但如果我設置useAmbientTransaction爲False的消息在SQL成功。

我讀過一些文章,微軟不建議將useAmbientTransaction設置爲False,特別是如果Update和Delete涉及存儲過程。但我的解決方案使用存儲過程中的刪除和更新,這就是爲什麼我需要將它設置爲useAmbientTransaction爲True。但如果我這樣做,我一直遇到錯誤「MSDTC交易管理器無法推動交易到目的地...」

請建議任何可能的解決方案。

+0

同一篇文章是要連接到配置部分的總是可用性組數據庫?附:如果你用biztalk標記你的問題,如果他們是BizTalk相關的問題,它會有所幫助。 – Dijkgraaf

回答

0

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

爲SQL Server 2014 Cross-Database Transactions Not Supported For Database Mirroring or AlwaysOn Availability Groups (SQL Server)

VS

的SQL Server 2016 Cross-Database Transactions and Distributed Transactions for Always On Availability Groups and Database Mirroring (SQL Server)

+0

謝謝你Dijkgraaf的答案。我驗證了我們的數據庫正在使用AlwaysOn可用性組,因此我關閉了useAmbientTransaction。 – Artline157

+0

@Nelel如果我的答案解決了您的問題,那麼您應該將其標記爲答案(旁邊的刻度線標記) – Dijkgraaf