文章編號: 867520 - 上次校閱: 2005年4月6日 - 版次: 2.0

您無法在屬於伺服器叢集的 Windows 2000 Server 電腦上啟動 Microsoft Distributed Transaction Coordinator (MSDTC) 服務

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
重要 本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和編輯登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986? (http://support.microsoft.com/kb/256986/ ) Microsoft Windows 登錄說明
全部展開 | 全部摺疊

徵狀

在屬於伺服器叢集的 Microsoft Windows 2000 Server 電腦上,您會收到下列錯誤訊息:
當處理最後作業時發生錯誤。錯誤碼 8004E00F - COM+ 無法與 Microsoft Distributed Transaction Coordinator 通話。
您無法啟動 Microsoft Distributed Transaction Coordinator (MSDTC) 服務。

下列事件可能會記錄在應用程式事件日誌中:
事件 ID:4099
類型:錯誤
來源:COM+
描述:
執行時期環境無法初始化所需交易來支援交易式元件。請確認 MS DTC 正在執行中。(DtcGetTransactionManagerEx{}:hr = 0x8004d01b

事件 ID:4097
類型:錯誤
來源:MSDTC
描述:
MS DTC 已啟動,設定如下:
安全性設定 (OFF = 0 和 ON = 1):
交易的網路管理 = 1,
網路用戶端 = 0,
使用原始 MSDTC 通訊協定的分散式交易 = 1,
Transaction Internet Protocol (TIP) = 0, XA
交易 = 1

事件 ID:4395
類型:錯誤
來源:MSDTC
描述:
MSDTC 已偵測到本機登錄中的 MSDTC 相關資訊不同於共用叢集登錄中的資訊。錯誤內容: d:\nt\com\com1x\dtc\shared\mtxclu\mtxclusetuphelper.cpp:541,
CmdLine: C:\WINNT\System32\msdtc.exe, Pid: 796

事件 ID:4384
類型:錯誤
來源:MSDTC
描述:
MS DTC 無法啟動,因為安裝未設定為在叢集上執行。請執行 comclust.exe 並重新啟動 MS DTC。錯誤內容: d:\nt\com\com1x\dtc\shared\mtxclu\mtxclusetuphelper.cpp:668,
CmdLine: C:\WINNT\System32\msdtc.exe, Pid:796

發生的原因

下列情況成立時,就會發生這個問題:
  • 您已將 MSDTC 服務安裝為 Windows 2000 Server 叢集上的非叢集資源。
  • 您已安裝了 MS04-012 軟體更新。

    注意 MS04-012 軟體更新包含在 Windows 2000 Service Pack 4 之後的 COM+ Hotfix 彙總套件 27 中。
MS04-012 軟體更新包含 MSDTC Proxy (Msdtcprx.dll) 的變更。軟體更新顯示,必須將 MSDTC 服務設定為叢集資源。在您第一次安裝更新後,仍然可以在本機叢集上啟動 MSDTC 服務,因為服務是在叢集服務啟動之前進行初始化的, 但是,如果您在執行叢集服務後停止 MSDTC 服務,就必須重新啟動伺服器後,才能重新啟動 MSDTC。

如需有關 MS04-012 更新的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
822473? (http://support.microsoft.com/kb/822473/ ) "MSDTC Is Unavailable" Error When a Stand-Alone Instance of SQL Server Is in a Cluster Environment
注意 如果您將 MSDTC 安裝為非叢集資源,這項設定可能會導致孤立交易。如果發生叢集容錯移轉,孤立交易可能會造成資料損毀。 因此,我們不建議使用,也不支援這項設定。根據預設,Microsoft Windows Server 2003 會要求將 MSDTC 安裝為叢集資源。

解決方案

如果要解決這個問題,請依照下列步驟執行:

警告 不當使用「登錄編輯程式」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 並不保證可以解決您不當使用「登錄編輯程式」所導致的問題。請自行承擔使用「登錄編輯程式」的一切風險。
  1. 使用終端機服務用戶端,或是在主控台上,連結到兩個節點。
  2. 將所有資源移到其中一個節點, 這個節點就會變成主動節點。
  3. 在兩個節點上,使用「登錄編輯程式」刪除下列登錄子機碼:
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
    • HKEY_CLASSES_ROOT\CID
    如果要執行這項操作,請依照下列步驟執行:
    1. 按一下 [開始],再按一下 [執行],輸入 regedit,然後按一下 [確定]
    2. 找出並用滑鼠右鍵按一下下列登錄子機碼:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
    3. 按一下 [刪除]
    4. 按一下 [是] 確認刪除。
    5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      子機碼和
      HKEY_CLASSES_ROOT\CID
      子機瑪,重複執行步驟 a 至 d。
    6. 結束 [登錄編輯程式]。
  4. 在主動節點上,建立仲裁磁碟機上的 DTClog 資料夾。例如,建立 Q:\DTClog 資料夾。
  5. 如果您在 Windows 檔案總管或命令提示字元中看不到仲裁磁碟機,請使用 DCOMCNFG 公用程式 (Dcomcnfg.exe) 來確認設定。如果要使用 DCOMCNFG 公用程式,請依照下列步驟執行:

    注意 如果您已經安裝了 Oracle,這個程序可能會重設其值,並且鎖定系統管理員帳戶和系統帳戶。
    1. 按一下 [開始],再按一下 [執行],輸入 dcomcnfg,然後按一下 [確定]
    2. 按一下 [預設安全性] 索引標籤。
    3. [預設的存取權] 下方,按一下 [編輯預設值]
    4. 確認下列預設存取權限:
      • SYSTEM 允許存取
      • INTERACTIVE 允許存取
      • Administrators 允許存取
      如果有項目遺失,請按一下 [新增],按一下您要新增的帳戶,再按一下 [新增],然後按一下 [確定]

      注意 您也可能會看到一個叢集系統管理員帳戶, 這個帳戶屬於系統管理員群組。例如,如果叢集系統管理員帳戶的名稱為 CLUSADMIN,您可能會看到 CLUSADMIN 允許存取
    5. 當您完成時,請按一下 [確定]
    6. [預設的啟動權] 下方,按一下 [編輯預設值]
    7. 確認下列權限:
      • SYSTEM 允許啟動
      • INTERACTIVE 允許啟動
      • Administrators 允許啟動
      如果有項目遺失,請按一下 [新增],按一下您要新增的帳戶,再按一下 [新增],然後按一下 [確定]
    8. 當您完成時,請按兩次 [確定]
    9. 如果變更 DCOMCNFG 公用程式的設定,必須先登出,然後重新登入一次,才能取得存取權限。
  6. 在兩個節點上,停止 MSDTC 服務。如果要執行這項操作,請在命令提示字元中輸入下列命令,然後按下 ENTER:
    net stop msdtc
    確認電腦上顯示訊息,指出 MSDTC 服務已經順利停止。
  7. 在兩個節點上,移除 MSDTC。如果要執行這項操作,請在命令提示字元中輸入下列命令,然後按下 ENTER:
    msdtc -uninstall
  8. 在兩個節點上,確認 Distributed Transaction Coordinator 服務已經從「服務」嵌入式管理單元中移除。如果要啟動「服務」嵌入式管理單元,請按一下 [開始],再按一下 [執行],輸入 services.msc,然後按一下 [確定]
  9. 在主動節點和被動節點上,將 MSDTC 安裝為叢集資源。首先,請在主動節點上安裝 MSDTC, 然後,再在被動節點上安裝 MSDTC。如果要執行這項操作,請依照下列步驟執行:
    1. 在主動節點的命令提示字元中輸入下列命令,然後按下 ENTER:
      comclust
      當 COM Cluster Wizard (Comclust.exe) 執行完成後,程式會回到命令提示字元中。 請不要關閉命令提示字元。
    2. 在被動節點的命令提示字元中輸入下列命令,然後按下 ENTER:
      comclust
      當 COM Cluster Wizard 執行完成後,程式會回到命令提示字元中。
    3. 關閉被動節點的命令提示字元。您必須先關閉被動節點的命令提示字元。
    4. 關閉主動節點的命令提示字元。
    如需有關如何在 Windows 2000 環境中將 MSDTC 安裝為叢集資源的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    290624? (http://support.microsoft.com/kb/290624/ ) How to configure MSDTC in a Windows 2000 cluster environment
  10. 請確認沒有出現任何錯誤訊息,而且已安裝 MSDTC 服務。此外,也請確認 MSDTC 資源已經新增到叢集群組中。

    注意 如果您收到下列錯誤訊息,請重新啟動所有節點,然後再執行一次步驟 9:

    C:\Documents and Settings\Administrator>comclust 設定 MS DTC。安裝程式偵測到目前叢集設定不包含任何可以建立 MS DTC 資源的資源群組。MS DTC 的安裝程式需要包含至少一個資源群組的叢集,而這個資源群組包含網路名稱資源及共用磁碟資源。 安裝程式也需要這個資源群組是由執行安裝程式之叢集中的第一個節點所擁有。請在修正叢集設定之後重新執行安裝程式。
  11. 請確定 MSDTC 叢集資源可以正常運作。如果要執行這項操作,請嘗試下列方式:
    1. 確認您可以將叢集群組從一個節點移到另一個節點,然後再移回原來的節點。
    2. 確認您可以在不發生任何錯誤的情況下執行「元件服務」嵌入式管理單元。如果要執行這項操作,請按一下 [開始],指向 [程式集],再指向 [系統管理工具],然後按一下 [元件服務]。在 [元件服務] 嵌入式管理單元中,依序展開 [元件服務][電腦][我的電腦],然後再展開 [COM+ 應用程式]
    3. 使用「事件檢視器」,檢查系統事件日誌和應用程式事件日誌中的相關錯誤訊息。

?考

如需有關如何將 MSDTC 設定為叢集資源的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
305742? (http://support.microsoft.com/kb/305742/ ) You may receive error messages when you start MSDTC on a node of a cluster server
296313? (http://support.microsoft.com/kb/296313/ ) Setup fails when MS DTC is not configured as a cluster resource
301600? (http://support.microsoft.com/kb/301600/ ) How to configure Microsoft Distributed Transaction Coordinator on a Windows Server 2003 cluster

這篇文章中的資訊適用於:
  • Microsoft Windows 2000 Advanced Server
關鍵字:?
kbclustering kberrmsg kbtshoot kbprb KB867520
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。