簡體   English   中英

MSDTC首次交易失敗

[英]MSDTC failing on first transaction

我有一個應用程序每天檢索一次數據並存儲到數據庫中。 直到最近,這個應用程序與SQL服務器位於同一台機器上,但是由於某些必需的外圍設備存在一些硬件問題,它已被轉移到運行Windows XP的獨立機器上。

我們在這里遇到的問題是,當早晨的第一個事務運行時,我們會收到以下堆棧跟蹤:

System.Transactions.TransactionManagerCommunicationException:與底層事務管理器的通信失敗。 ---> System.Runtime.InteropServices.COMException(0x80004005):錯誤HRESULT E_FAIL已從調用COM組件返回。

但是,立即重新運行該事務是成功的。 好像MSDTC花了很長時間來響應第一筆交易,因此失敗了,但隨后准備好了第二筆交易。 我發現在互聯網上發現了幾個這樣的引用,但沒有找到真正的解決方案。 有沒有遇到過這個? 如果是這樣,有沒有辦法防止MSDTC從內存中卸載,還是有其他解決方案,比如延長超時?

多謝你們,

為了讓您滿意,我們通過更改dcom配置以使用位於SQL服務器上的遠程協調器來解決問題,到目前為止我們還沒有遇到任何進一步的問題。

我建議你首先查看所有涉及的機器的事件日志,看看還有什么。 你正在假設發生了什么。 這可能是一個很好的假設,但我建議你在做出改變之前先找出答案。

我也將開始將這個問題轉移到ServerFault,在那里你可能會得到更快的答案。 如果花了太長時間(五個人必須投票),那么你可能想要手動詢問那里的問題。 如果您這樣做,那么表明原始(和鏈接之后)可能正在進行中。

要查看的一件事(可能不是您的問題的原因),是確保客戶端IP上的反向DNS查找實際上解析為引用客戶端計算機的名稱。 我們的DNS / DHCP設置存在問題,其中IP與多個名稱匹配。 當MSDTC的遠程端嘗試連接回客戶端上的MSDTC時,它正在嘗試連接到另一台計算機。

這將表現為(看似隨機)的事務超時。

哦,親愛的,我們也面臨同樣的問題。 我們正在將數據從一個數據庫遷移到另一個數據庫(具有不同的結構),並使用Subsonic來加速該過程。 我們使用了事務和SharedDbConnectionScope對象,它在運行XP SP3的機器上運行失敗。 我認為SP3中有一些更新可以解決這些問題,因為它在Vista,2003和2008服務器上運行良好。

編輯:這是一篇MSDN KB文章 ,討論了同樣的問題。

您可以嘗試運行一個只需每30分鍾左右在DTC上啟動和提交交易的流程嗎?

我們在測試環境中遇到了類似的問題。 在10分鍾不活動后發生的第一個事務失敗,並顯示錯誤“與基礎事務管理器的通信失敗”。
經過一些研究,我們得出結論,MSDTC連接被取消,無法在所需的時間內建立(它的接收類似於此操作的默認超時為4秒)。 為了解決這個問題,我們增加了客戶端計算機等待來自服務器計算機的綁定包響應的時間長度。 這是通過在客戶端計算機的注冊表中添加密鑰來完成的: http//support2.microsoft.com/?id = 922430

暫無
暫無

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

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