http://blog.sina.com.cn/s/blog_78bb6d040101ddjl.htmlhtml
.Net開發過程當中,涉及多個數據庫和不一樣數據庫的分佈式事務(Distributed Transaction)開發,有時會碰到「與基礎事務管理器的通訊失敗」的錯誤。致使這個錯誤通常有下列三個緣由:ios 1) MSDTC設置不正確;web 2) 是否被防火牆阻擋;數據庫 3) 跨網段通信或跨域通信;跨域 在數據庫項目開發時,鏈接一個遠程數據庫(如SQLServer2005時)時,建立多個數據庫鏈接時,SQLServer2005會自動由 LTM(Light Weight Transaction Manager)升級成OLETX(MSDTC)來處理,開啓MSDTC服務,經過RPC遠程數據庫。排除此問題可經過如下幾步來解決:安全 1、檢查數據庫端機器與客戶端(好比Web端)的MSDTC配置,以下圖所示:服務器
注:在Windows2003+sp1或WinXP+SP2的機器環境時,若客戶端和數據庫端的操做系統同樣(即都爲Win2003+sp1或 WinXP+SP2),則能夠要求雙方進行驗證;若客戶端和服務端有一方不相同(如爲win2000)時,需設置爲不要求進行驗證;所以安全配置建議設置 爲不要求進行驗證,如上圖所示。分佈式 2、若仍是不成功,能夠看一下是否開啓網卡上的防火牆,可把MSDTC加入例外,以下圖所示:(關於MSDTC與防火牆的問題可參考:http://support.microsoft.com/kb/306843/zh-GB)工具
如上圖所示,DB服務器和客戶端RPC是相互連通能夠通訊的。 注意:Remote Server Name爲NetBios名稱。 工具能夠從微軟網站上下載: DTCPing能夠從微軟站點下載:http://www.microsoft.com/downloads /details.aspx?FamilyID=5e325025-4dcd-4658-a549-1d549ac17644&DisplayLang=en DTCPing說明: http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q306843 DTCTester能夠從微軟站點下載:http://support.microsoft.com/?scid=kb;en-us;293799 3、在若還不行,看一下數據庫服務器與客戶端(如web端)是否是在同一網段(或者同一個AD域),檢測步驟可參考以下: a) telnet DbIP 135是否能夠通; b) 而後相互Ping IP; c) 再ping 相互的NetBios名稱,還不通的話 d) 能夠修改%windir%/system32/etc/hosts,或%windir%/system32/etc/lmhost.sam去掉文件擴展名,進行DB服務和IP的綁定便可,以下圖所示: 在不一樣的AD域中,若IP能夠ping通,但機器名稱不能Ping通,則說明機器名稱解析有問題,請檢測wins服務和DNS是否正確。 經過以上幾步,通常MSDTC的通訊就OK了。 |