共用方式為


針對 MSDTC 的問題進行疑難解答

大部分的 BizTalk Server 運行時間作業都需要Microsoft分散式交易協調器 (MSDTC) 支援,以確保作業在交易上保持一致。 如果 MSDTC 交易支援無法使用,則相關聯的 BizTalk Server 運行時間作業無法繼續。 未正確設定 MSDTC 交易支援時,通常受影響的 BizTalk 元件包括單一 Sign-On 服務、BizTalk 主機實例,以及 BizTalk Server 所連線的任何 SQL Server 實例。 本節包含描述 MSDTC 相關錯誤和可遵循的步驟來診斷和解決 MSDTC 問題的資訊。

MSDTC 交易支援未正確設定時可能發生的錯誤

當 BizTalk 環境中的電腦上未正確設定 MSDTC 交易支援時,可能會發生類似下列的錯誤:

  • 「Microsoft分散式交易協調器問題導致無法連線到組態資料庫。 交易管理員已停用對遠端/網路交易的支援。

  • 「Microsoft分散式交易協調器問題導致無法連線到組態資料庫。 交易已隱含或明確認可或中止」。

  • 「錯誤碼:0x8004d00a,新交易無法在指定的交易協調器中登記」。

  • 「無法從組態存放區擷取接收位置 'MySample ReceiveLocation' 的傳輸類型數據。 主要 SSO 伺服器 'MyServer' 失敗。 RPC 伺服器無法使用」 。

  • 「錯誤碼:0x8004d025,夥伴交易管理員已停用對遠端/網路交易的支援」。

  • 「錯誤碼:0xc0002a24,無法匯入 DTC 交易。 請檢查是否已正確設定 MSDTC 以進行遠端作業。

  • “0x8004d01c

    [0x1705] 建立內部工作項目時發生失敗。

    請確定 SQL Server 正在執行。」

    若要解決 MSDTC 設定錯誤,請遵循下列步驟。

確定 BizTalk Server 與遠端伺服器之間的 NetBIOS 名稱解析成功

計算機之間的成功 MSDTC 交易要求用戶端計算機能夠將伺服器電腦的 NetBIOS 名稱解析為正確的 IP 位址,而且伺服器計算機能夠將用戶端電腦的 NetBIOS 名稱解析為正確的 IP 位址。 若要確認 NetBIOS 名稱解析可雙向運作(用戶端對伺服器和伺服器對用戶端),請遵循下列步驟:

備註

NetBIOS 名稱通常也稱為 網路 名稱。

  1. 判斷每部電腦的 NetBIOS 名稱:

    1. 以滑鼠右鍵按兩下 [我的電腦 ] 以顯示 [系統內容 ] 對話框,然後按兩下 [ 計算機名稱 ] 索引標籤,以檢視指派給電腦 的完整計算機名稱

    2. NetBIOS 名稱是指定為 完整計算機名稱 的第一個部分,例如,如果 完整計算機名稱 列為 myserver.company.domain.com,則計算機的 NetBIOS 名稱是 myserver

  2. 判斷與每部計算機相關聯的IP位址或位址:

    1. 在用戶端電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER 鍵:

      ipconfig /all
      
    2. 與用戶端電腦相關聯的IP位址或位址會列在命令提示字元視窗中。

    3. 在伺服器電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER:

      ipconfig /all
      
    4. 與伺服器電腦相關聯的IP位址或位址會列在命令提示字元視窗中。

  3. 確認每部電腦的 NetBIOS 名稱解析為與電腦相關聯的其中一個 IP 位址:

    1. 在用戶端電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER 鍵:

      ping <NetBIOS name of server computer>
      

      ping 命令的結果應該會傳回與伺服器計算機相關聯的IP位址。

    2. 在伺服器電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER:

      ping <NetBIOS name of client computer>
      

      ping 命令的結果應該會傳回與用戶端計算機相關聯的IP位址。

  4. 確認每台電腦上與 NetBIOS 名稱相關聯的 IP 位址反向名稱查找會解析為正確的電腦名稱。

    1. 在用戶端電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER 鍵:

      ping -a <IP Address associated with client computer NetBIOS name>
      

      ping 命令的結果應該會傳回對應至步驟 3a 中所使用之 NetBIOS 名稱的 NetBIOS 名稱或完整域名。 如果傳回的名稱不符合或對應至步驟 3a 中使用的 NetBIOS 名稱,IP 位址反向對應將會失敗,這可能會導致 MSDTC 交易失敗。

    2. 在伺服器電腦上啟動命令提示字元,輸入下列命令,然後按 ENTER:

      ping -a <IP Address associated with server computer NetBIOS name>
      

      ping 命令的結果應該會傳回對應至步驟 3b 中所使用之 NetBIOS 名稱的 NetBIOS 名稱或完整網域名稱。 如果傳回的名稱不符合或對應至步驟 3b 中使用的 NetBIOS 名稱,IP 位址反向對應將會失敗,這可能會導致 MSDTC 交易失敗。

    如果 NetBIOS 名稱解析在正向或反向任一方向失敗,或者反向名稱查詢失敗,請在 DNS 伺服器、NetBIOS 名稱伺服器、HOSTS 檔案或 LMHOSTS 檔案中建立適當的記錄,以更正問題。

備註

計算機所使用的名稱解析方法會根據計算機的 NetBIOS 節點類型而有所不同。 如需 NetBIOS 節點類型的詳細資訊,請參閱 NetBIOS 名稱解析

確定 BizTalk Server 與遠端伺服器之間的防火牆不會封鎖 RPC 動態埠配置所需的埠

透過網路的 MSDTC 功能取決於透過網路的 RPC 功能。 透過防火牆的 RPC 功能需要開啟特定埠,才能容納 RPC 動態埠配置。 如果 BizTalk Server 與遠端伺服器之間有防火牆,請遵循 如何設定 RPC 動態埠配置中的步驟來處理防火牆,以 配合 RPC 動態埠配置。

設定適當的 MSDTC 安全性組態選項

Windows 提供安全性增強功能,可控管透過網路存取 MSDTC 的方式。 藉由修改 MSDTC 安全性設定,您可以控制 MSDTC 如何透過網路與遠端電腦通訊。 下表列出設定 MSDTC 安全性設定時可用的選項建議值:

組態選項 預設值 建議值
網路 DTC 存取 已停用 已啟用
用戶端和管理
允許遠端用戶端 已停用 已停用
允許遠端管理 已停用 已停用
交易管理員通訊
允許輸入 已停用 已啟用
允許外部連接 已停用 已啟用
需要相互驗證 已啟用 如果所有遠端計算機都執行 Windows Server 2003 SP1 或 Windows XP SP2 或更新版本,且已設定為「需要相互驗證」,則為啟用。
需要來電者驗證 已停用 如果在叢集上執行 MSDTC,則為啟用。
不需要驗證 已停用 如果遠端電腦在 Windows Server 2003 SP1 或 Windows XP SP2 前啟用。
啟用 TIP 已停用 執行 BAM 入口網站時已啟用。
啟用 XA 交易 已停用 當使用 XA 基於交易系統進行通訊時,例如使用 MQSeries 配接器與 IBM WebSphere MQ 通訊,則啟用。

套用這些變更之後,MSDTC 服務將會重新啟動。

若要存取 MSDTC 安全性設定選項,請遵循下列步驟:

  1. 按兩下 [開始],按兩下 [ 執行],然後輸入 dcomcnfg 來啟動 元件服務管理控制台。

  2. 按兩下以展開 [元件服務 ],然後按兩下以展開 [計算機]。

  3. 點擊展開 [我的計算機],點擊展開 [分散式交易協調器],右鍵點擊 [本機 DTC],然後點擊 [屬性].

  4. 按一下 [本機 DTC 屬性] 對話框的 [安全性] 索引標籤。

備註

根據所做的變更,您可能需要重新啟動電腦才能使變更生效。 如果您在套用變更並重新啟動 MSDTC 服務之後仍然遇到問題,請重新啟動進行變更的電腦,以確保變更生效。

如果已啟用[需要相互驗證][連入呼叫端驗證必要]組態選項,則必須將[從網路存取此電腦]使用者權限授與用戶端的電腦帳戶。 如果用戶端電腦的計算機帳戶未被授與 從網路存取這部計算機 的權限,或被包括在 拒絕從網路存取這部計算機 的權限中,則用戶端電腦與伺服器之間的 DTC 通訊將會失敗。

默認設定是授與 [所有人] 群組使用者權限 從網路存取這部電腦 的許可權。 因此,除非修改預設設定,否則不需要變更此用戶權力。 如果啟用 [不需要驗證] 組態選項,則 從網路用戶權力存取此計算機 不會套用至用戶端計算機帳戶。

若要變更獲授與「從網路存取這部計算機」用戶權力的使用者或群組,請遵循下列步驟:

  1. 按兩下 [開始],按兩下 [ 執行],輸入 Gpedit.msc,然後按兩下 [ 確定]。

  2. 請展開本機計算機原則清單中的以下項目:

    • [電腦設定]

    • Windows 設定

    • 安全性設定

    • 本機原則

  3. 按一下 [使用者權限指派]

  4. 按兩下 [從網络存取這部計算機],然後按兩下 [ 新增使用者或群組]。

  5. 按兩下 [物件類型],選取 [ 計算機 ],然後按兩下 [ 確定]。

  6. [輸入要選取的物件名稱 ] 區域中新增計算機名稱或組名。

  7. 按一下 檢查名稱 以驗證條目。

  8. 按兩次 [確定]

    若要變更 [ 拒絕使用者透過網路存取此電腦 ] 使用者權限中包含的使用者或群組,請遵循下列步驟:

  9. 展開 [本機電腦政策] 列表中的下列項目:

    • [電腦設定]

    • Windows 設定

    • 安全性設定

    • 本機原則

  10. 按一下 [使用者權限指派]

  11. 按兩下 [ 拒絕從網络存取這部計算機],然後按下以選取您要從此使用者權力移除的電腦名稱或群組。

  12. 按兩下 [移除 ],然後按兩下 [ 確定]。

設定 EnableAuthEpResolution 和 RestrictRemoteClients 選項的適當值

Windows 藉由要求對 RPC 介面進行已驗證的呼叫來增強安全性。 這項功能可透過 EnableAuthEpResolutionRestrictRemoteClients 登錄機碼來設定。 若要確保遠端電腦能夠存取 RPC 介面,請遵循下列步驟:

警告

不正確使用註冊表編輯器可能會導致需要重新安裝作業系統的問題。 請自行承擔使用登錄編輯程式的風險。 如需如何備份、還原及修改登錄的詳細資訊,請參閱 Microsoft Windows 登錄描述中的Microsoft知識庫文章Windows 登錄的描述>。

  1. 按兩下 [開始],按兩下 [ 執行],輸入 regedit.exe,然後按兩下 [ 確定 ] 啟動註冊表編輯器。

    瀏覽至 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT

  2. RPC 機碼底下,建立下列 DWORD 項目,並使用指示的值。 如果 RPC 金鑰不存在,則必須建立它。

    DWORD 項目 預設值 建議值
    啟用授權端點解析 0 (已停用) 1
    限制遠端客戶端 1 (已啟用) 0
  3. 關閉登錄編輯器。

  4. 重新啟動 MSDTC 服務。

備註

根據所做的變更,您可能需要重新啟動電腦才能使變更生效。 如果您在套用變更並重新啟動 MSDTC 服務之後仍然遇到問題,請重新啟動進行變更的電腦,以確保變更生效。

如果 Windows 防火牆正在執行,請新增 MSDTC 服務的例外狀況

Windows 防火牆服務可能會封鎖電腦之間的 MSDTC 通訊。 為了確保計算機之間不會封鎖 MSDTC 通訊,如果 Windows 防火牆服務正在執行,請將 msdtc.exe 新增至 Windows 防火牆例外清單。

  1. 按兩下 [開始],按兩下 [ 執行],輸入 firewall.cpl,然後按兩下 [ 確定 ] 以顯示 [Windows 防火牆] 對話框。

  2. 按兩下 [允許程序通過 Windows 防火牆 ] 來顯示 [ Windows 防火牆設定 ] 對話框。

  3. 按兩下 [Windows 防火牆設定] 對話框的 [例外狀況] 索引標籤。

  4. 按兩下 [新增程式 ] 以顯示 [ 新增程式 ] 對話框。

  5. 點選 「瀏覽 」 並瀏覽至 %system32%\msdtc.exe。

    備註

    啟動命令提示字元,輸入 echo %system32% ,然後按 Enter 來判斷此電腦上 \System32 目錄的位置。

  6. 按一下以選取 msdtc.exe,然後按一下 開啟

  7. 按兩下 [變更範圍] 以指定應該允許 MSDTC 通訊的電腦集,然後按兩下 [確定]。

  8. 按兩下 [新增程式] 對話框中的 [確定],然後按兩下 [Windows 防火牆設定] 對話框中的 [確定]。

  9. 關閉 [Windows 防火牆] 對話框。

  10. 停止並重新啟動分散式交易協調器服務。

    • 啟動命令提示字元,輸入 net stop msdtc ,然後按 Enter

    • 在分散式交易協調器服務停止之後,輸入 net start msdtc ,然後按 Enter

使用 DTCTester 或 DTCPing 透過網路驗證 MSDTC 功能

如果 SQL Server 安裝在其中一部電腦上,請使用 Test-Dtc Cmdlet 來驗證兩部電腦之間的交易支援。 如需詳細資訊,請移至 Windows PowerShell:Test-Dtc

如果兩部計算機未安裝 SQL Server,請使用 DTCPing 來驗證兩部電腦之間的交易支援。 DTCPing 工具必須在用戶端和伺服器計算機上執行,而且當任一部計算機上未安裝 SQL Server 時,DTCTester 公用程式是 DTCTester 公用程式的良好替代方案。 如需 DTCPing 的詳細資訊,請參閱如何針對 MS DTC 防火牆問題進行疑難解答 ,以及設定 Microsoft分散式交易協調器 (DTC) 以透過防火牆運作

這很重要

如果 DTCPing 傳回警告:「這兩部測試機器的 CID 值都相同」,請遵循 確保 MSDTC 獲指派唯一的 CID 值 ,以容納測試機器之間適當的 MSDTC 功能一節中的步驟。

確定 MSDTC 已指派唯一的 CID 值

Windows作系統的 MSDTC 功能需要唯一的 CID 值,以確保電腦之間的 MSDTC 功能正常運作。 Windows 安裝的磁碟重複映像必須具有唯一的 CID 值,否則 MSDTC 功能可能會受損。 使用虛擬硬碟將作系統部署至虛擬機時,可能會發生這種情況。

若要判斷執行 Windows 作業系統之電腦的 MSDTC CID 值是否唯一,請檢查這兩部電腦上 HKEY_CLASSES_ROOT\CID 登錄機碼下的項目值。 如果每部計算機這些值不是唯一的,則請遵循 考慮重新安裝分散式交易協調器服務一節中的步驟,如果其他疑難解答步驟無法成功 將 MSDTC 重新安裝到其中一部計算機上,這將會為該計算機產生唯一的 MSDTC CID 值,並配合適當的 MSDTC 作業。

如果用戶端電腦與伺服器電腦之間的 MSDTC 連線已關閉,就會發生「新交易無法登記在指定的交易協調器中 #0x8004d00a」錯誤

在某些情況下,用戶端與伺服器之間的現有 MSDTC 連線可能會關閉,後續嘗試使用此聯機會導致下列錯誤訊息:新交易無法在指定的交易協調器中登記 (0x8004d00a) 如需詳細資訊,請在 嘗試在 MS DTC 中啟動交易時,移至 [新交易] 無法在指定的交易協調器中登記

如果其他疑難解答步驟未成功,請考慮重新安裝分散式交易協調器服務

如果針對 MSDTC 問題進行疑難解答的其他嘗試未成功,請考慮卸載和重新安裝 MSDTC。 請遵循下列步驟來卸載並重新安裝 MSDTC:

  1. 以系統管理員身分開啟命令提示字元。

  2. 在命令提示字元中,輸入下列命令以卸載分散式交易協調器服務: msdtc -uninstall

  3. 在命令提示字元中,輸入下列命令以安裝分散式交易協調器服務: msdtc –install

這很重要

重新安裝 MSDTC 可能會變更分散式交易協調器服務的預設行為。 重新安裝 MSDTC 之後,請遵循下列步驟,以確保分散式交易協調器服務正常運作:

  • 重新安裝 MSDTC 可能會將 MSDTC 安全性組態選項重設為預設值。 確認 MSDTC 安全性組態選項在重新安裝 MSDTC 之後設定為適當的值。
    • 重新安裝 MSDTC 可能會變更分散式交易協調器服務的 啟動類型 值。 確認分散式交易協調器服務的 啟動類型 值在重新安裝 MSDTC 之後設定為 [自動 ]。
    • 重新安裝 MSDTC 可能需要重新啟動電腦。 若要確保分散式交易協調器服務正常運作,請在重新安裝 MSDTC 之後重新啟動電腦。

另請參閱

用於針對 Windows Server 叢集進行疑難解答的工具和公用程式