如何疑難排解 MS DTC 防火牆問題

文章翻譯 文章翻譯
文章編號: 306843 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您疑難排解步驟,以協助您啟用 Microsoft Distributed Transaction Coordinator (MS DTC),透過防火牆與其他 MS DTC 通訊。下列清單概要說明透過防火牆使用 MS DTC 時,可能會遭遇的部份問題:
  • 當 MTS 或 COM+ 元件的 [交易支援] 屬性設為 [不支援][支援] 時,您的應用程式能夠順利地運作,但是,若該屬性設為 [需要][需要新增] 時,就無法順利地運作。
  • 您收到下列錯誤訊息:
    New transaction cannot enlist in specified transaction coordinator (新增的交易無法編列在指定的交易協調器中)
  • 您收到下列錯誤訊息:
    Error 8004d00a.Distributed Transaction error (錯誤 8004d00a。分散式交易錯誤)
雖然有數篇其他 Microsoft 文件說明如何解決這個問題,但本文概括了絕大部份的內容。

注意 所執行的疑難排解步驟是設計為只能與 Microsoft Windows NT 和 Microsoft Windows 2000 作業系統搭配使用。

其他相關資訊

疑難排解步驟

  1. 確認 MS DTC 服務是在兩部伺服器上啟動。
  2. 如果您的伺服器執行 Windows NT 4.0,在安裝 Windows NT 4.0 Option Pack (NTOP) 之後,您必須重新套用 Windows NT 4.0 Service Pack 6 (SP6)。查看下列表格所列的檔案版本,以確認在安裝 Windows NT 4.0 Option Pack 之後已經重新套用 Windows NT 4.0 SP6:

    摺疊此表格展開此表格
    檔案名稱安裝 NTOP 之後的版本重新安裝 SP6 之後的版本
    Msdtcprx.dll1997.11.5321999.6.854.0
    Msdtctm.dll1997.11.5321999.6.854.0
    Xolehlp.dll1997.11.5321998.08.762

    如需有關 Windows NT 4.0 Option Pack 安裝的詳細資訊,請參閱下列 Microsoft 白皮書:
    IIS 4.0 Recommended Installation Procedure (英文)
    http://support.microsoft.com/support/iis/install/install_iis4.asp
  3. 請同時設定兩部伺服器,讓 MS DTC 通訊在防火牆之間進行。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    250367 INFO:設定 Microsoft Distributed Transaction Coordinator (DTC) 通過防火牆
    如需有關如何設定 Windows 2000 上 TCP 連接埠的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    300083 How To Restrict TCP/IP Ports on Windows 2000 and Windows XP
  4. 如果 MS DTC 還是無法透過防火牆運作,請下載 DTCPing.exe 工具,並在相關的兩部伺服器上安裝這個工具。您可以從「Microsoft 下載中心」下載下列檔案:
    摺疊此圖像展開此圖像
    http://download.microsoft.com/download/
    立即下載 DTCPing.exe
    DTCPing.exe 檔案包含下列檔案:
    摺疊此表格展開此表格
    日期時間版本大小檔名
    29-Oct-200322:561.8.0.1274,490Dtcping.exe
    15-Dec-200322:051,618Eula.txt
    24-Nov-200320:591,560Machinea_failure.log
    24-Nov-200320:211,901Machinea_success.log
    24-Nov-200320:55999Machineb_failure.log
    24-Nov-200320:311,750Machineb_success.log
    24-Nov-200320:152,325Readme.txt
    發行日期:2003 年 11 月 24 日

    如需有關如何下載 Microsoft 支援檔案的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    119591 如何從線上服務取得 Microsoft 支援檔案
    Microsoft 已對這個檔案做過病毒掃描。Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案,看看有沒有病毒感染。檔案會儲存在安全的伺服器上,以避免任何未經授權的更改。
  5. 請使用隨附於 DTCPing.exe 下載的 Readme.txt 檔案,來測試從 Server1 到 Server2 的遠端程序呼叫 (RPC) 和 Distributed Transaction Coordinator (DTC) 通訊。如果這項測試成功,請從 Server2 至 Server1 執行測試。

    請注意,如果 RPC 無法傳送至任何一個方向,兩個方向的 MS DTC 通訊就會失敗。如果 RPC 通訊失敗,DTCPing 視窗 (在任一伺服器上) 就會顯示這個失敗,而此失敗也會儲存在相關的 dtcping.log 檔中。如需詳細資訊,請參閱 Readme.txt 檔。如果任一方向的測試失敗,且記錄檔指出 RPC 通訊發生失敗,請繼續執行下一個步驟。如果任一方向的測試失敗,且記錄檔指出 DTC 通訊發生失敗,請繼續執行下面的步驟 9。
  6. 如果至少一個方向的 RPC 失敗 (例如,從 Server1 至 Server2),請通知您的防火牆系統管理員,以確認兩個方向的「網際網路控制訊息通訊協定」(ICMP) 都是開啟的。

    注意 您通常可以藉由讀取 dtcping.log 檔,判斷 RPC 是否已經失敗。

    依預設,ICMP 是 port1。您可以在通訊協定檔案中確認這點,而通訊協定檔案位於 %windir%\WinNT\System32\Drivers\ 資料夾。請使用 Server1 中的 NetBios 名稱 Ping Server2。如果 Ping 失敗,請繼續執行下一個步驟。或者,繼續執行步驟 8。
  7. 使用 Server1 中的 IP 位址 Ping Server2,以確認已開啟防火牆上要進行 Ping 的正確連接埠。網路監視器追蹤能夠確認這點。如果 IP 位址 Ping 成功,而 NetBios 名稱 Ping 失敗,表示發生名稱解析問題。

    注意 您可以使用 ipconfig /all 命令來擷取伺服器的 IP 位址。

    測試名稱解析的快捷方法,就是在用戶端伺服器的 Hosts 檔中建立項目。此為 NetBios 名稱 Ping 失敗的伺服器。您可以在檔案所隨附的範例項目後面建立您的項目模型。

    注意 在 Hosts 檔案中建立項目,僅做為疑難排解之用。如果新的項目解決了名稱解析問題,請從 Hosts 檔案中移除項目,並在 DNS、WINS 伺服器或 LmHosts 檔案中建立必要的項目。

    仍有其他解決名稱解析問題的解決方案,但那些方案已超出本文的討論範圍。
  8. 如果使用 NetBios 名稱 Ping Server2 失敗,或者使用 NetBios 名稱 Ping Server2 成功,但 DTCPing 測試仍顯示 RPC 通訊失敗,可能表示防火牆上的連接埠 135 (End Point Mapper 或 EPM) 尚未雙向地開啟。請檢查防火牆,確認兩個方向的 EPM 都是開啟的。在這個時候,網路監視器追蹤可能有助於找出問題所在。
  9. 如果 DTCPing 測試指出兩個方向的 RPC 通訊可以運作,那麼您只能執行到這個步驟。如果 DTCPing 指出任一方向都沒有錯誤,那麼 RPC 和 MS DTC 通訊就能正常地傳送。
  10. 如果 DTCPing 指出至少一個方向的 DTC 通訊失敗 (例如,從 Server1 至 Server2),請通知防火牆系統管理員,以確認開發人員在參閱 MS DTC 設定文件時 (請參閱步驟 3) 所指定的連接埠是開啟的。此外,某些規則可能會套用至禁止 RPC 回呼任一 (或兩者) 伺服器的防火牆。網路監視器追蹤可能有助於疑難排解這種特殊情形。
  11. 如果 DTCPing 傳回類似下列的錯誤訊息:
    Unexpected:My session guid is same as partner's guid (未預期:我的工作階段 GUID 與協力電腦的 GUID 相同)
    檢查目前伺服器是否重複,或是從其他伺服器複製而來。如果是,請在登錄中找出 HKEY_CLASSES_ROOT\CID 機碼。在此機碼下,您可能會看到不止一個 GUID。找出基礎描述機碼為 MSDTC 的 GUID。請注意,此 GUID 也會列在 DTCPing 輸出視窗中。如果其他伺服器具有與登錄中 MS DTC 的 GUID 完全相同的 GUID,您必須在其中一個登錄中為 MS DTC 建立新的 GUID。您可以利用 GuidGen 來建立。

    將這個新的 GUID,以及 GUID 的所有基礎機碼都新增至 HKEY_CLASSES_ROOT\CID 之後,請務必刪除所取代的舊 GUID。

    如果這個步驟解決了您的問題,強烈地建議您閱讀下列文件,以進一步瞭解重複的 (或建立映像的) 電腦: 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    162001 Do not disk duplicate installed versions of Windows

屬性

文章編號: 306843 - 上次校閱: 2007年10月29日 - 版次: 4.1
這篇文章中的資訊適用於:
  • Microsoft COM+ 1.0
  • Microsoft Transaction Services 2.0
關鍵字:?
kbproductlink kbdownload kbdtc kbhowto KB306843
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com