Share via


在 Windows 10 電腦上啟用 MS DTC 的診斷追蹤

本文討論如何在 Windows 10 計算機上啟用 Microsoft Distributed Transaction Coordinator (MS DTC) 的診斷追蹤。

原始產品版本:Windows 10
原始 KB 編號: 926099

重要事項

本文包含如何修改「登錄檔」的相關資訊。 修改登錄之前,請務必先備份, 並了解如何在發生問題時還原登錄。 如需如何備份、還原和修改登錄的詳細資訊,請參閱 進階使用者的 Windows 登錄資訊

追蹤設備的類型

  • 交易管理員追蹤

    交易管理員 (TM) 追蹤追蹤交易狀態變更。 它是由 MS DTC 交易管理員所產生。 輸出是二進位格式,而且輸出必須格式化。 交易管理員是 MS DTC 服務的一部分。

  • 通訊管理員錯誤追蹤

    通訊管理員 (CM) 錯誤追蹤會追蹤任何載入Msdtcprx.dll檔案的進程,並使用 MS DTC RPC ) 介面 (遠端過程調用,與其他 MS DTC 相關進程通訊。 輸出是文字格式。 0x8004d00a錯誤是通訊管理員錯誤追蹤可能很有用的典型錯誤。

注意事項

交易管理員追蹤和通訊管理員錯誤追蹤是獨立的進程。 您可以獨立啟用交易管理員追蹤和通訊管理員錯誤追蹤。 或者,您可以獨立停用它們。

啟用交易管理員追蹤

您可以使用元件服務 Microsoft Management Console (MMC) 嵌入式管理單元來啟用事務管理員追蹤。 如果要執行這項操作,請依照下列步驟執行:

  1. 依序選取 [ 開始]、 [所有程式]、[ 配件],然後選取 [ 執行]

  2. 輸入 comexp.msc,然後選取 [ 確定]

  3. 依序展開 [元件服務]、[ 計算機]、 [我的計算機]、[ 分散式交易管理員]、以滑鼠右鍵按兩下 [ 本機 DTC],然後選取 [ 屬性]

  4. 選取 [ 追蹤] 索引標籤

  5. 在 [ 追蹤] 索引標籤 上,您可以修改下列TM追蹤選項:

    • 追蹤輸出
      • 追蹤交易
        • 追蹤所有交易
        • 追蹤中止的交易
        • 追蹤 Long-Lived 交易

當您變更TM追蹤組態時,MS DTC服務會偵測變更。 不過,您不需要回收程式。 例如,當您變更追蹤的交易或追蹤檔案的位置時,MS DTC 服務會偵測登錄中的變更。 您不需要重新啟動 MS DTC 服務。

Windows 中的新 MS DTC 追蹤系統

在 Windows 中,MS DTC 具有全新且廣泛的追蹤系統。 新系統具有下列設計目標:

  • 新增格式化追蹤只需要一行程序代碼。
  • 人類在沒有網路的生產計算機上可讀取追蹤。
  • 輸出選項具有彈性。
  • 追蹤速度很快。
  • 您不需要重新啟動電腦即可變更選項。

此外,在 Windows 10 和 Windows Server Technical Preview 中,追蹤記錄檔名稱包含叫用追蹤記錄的進程名稱。 這是由輸出登錄機碼所控制。

設定追蹤

警告

Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft 不保證可以解決這些問題。 Modify the registry at your own risk.

追蹤組態位於本機節點上,位於 MS DTC 登錄機碼下名為 Tracing 的登錄機碼中。 登錄 Tracing 機碼包含連接管理員追蹤。 先前,您已使用登錄 TraceCMErr 機碼來設定連接管理器追蹤。 登入 Tracing 機碼包含下列兩個子機碼:

  • Sources:這個子索引鍵會設定追蹤的種類。
  • Output:這個子索引鍵會設定追蹤輸出的傳送位置。

注意事項

請確定進程可以存取 Tracing 登錄機碼。 根據預設,Windows 設定不會建立此金鑰,也不會授與此密鑰的許可權。 您可以使用登錄 編輯器 來設定追蹤功能。

若要建立追蹤功能登錄專案,請遵循下列步驟:

  1. 取 [啟動>所有程式>配件>執行],輸入 regedit,然後選取 [ 確定]

  2. 找出並選取下列其中一個子索引鍵:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Sources
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Output
  3. 在 [ 編輯] 功能表上,選取 [ 新增],然後選取專案的數據類型。 例如,選 取 [DWORD (32 位) 值]

  4. 輸入所需來源的名稱,然後按 ENTER。 如需來源名稱的詳細資訊,請參閱設定 來源 一節中的數據表。

  5. 以滑鼠右鍵按下新的登錄項目,選取 [ 修改],在 [ 值數據 ] 方塊中輸入您想要的值,然後選取 [ 確定]

  6. 選取 [檔案] 功能表上的 [結束]

設定來源

登錄 Sources 機碼包含一組下表所列的 DWORD 登錄值。

名稱 描述
TRACE_MISC 無法分類為其他類別的追蹤
TRACE_CM 連接管理員中的追蹤
TRACE_TRACE 追蹤基礎結構本身
TRACE_SVC 追蹤服務和 .exe 檔案啟動
TRACE_GATEWAY 閘道來源
TRACE_UI 追蹤使用者介面
TRACE_CONTACT 追蹤聯繫人集區和聯繫人
TRACE_UTIL 從多個位置呼叫的追蹤公用程式例程
TRACE_CLUSTER 追蹤叢集特定 (公用程式) 程式代碼
TRACE_RESOURCE 追蹤叢集資源特定程序代碼
TRACE_TIP 交易因特網通訊協定 (提示) 追蹤來源
TRACE_XA XA Transaction Manager (XATM) 追蹤來源
TRACE_LOG 記錄追蹤
TRACE_MTXOCI MTS/OCI 層 (Mtxoci.dll) 追蹤來源
TRACE_ETWTRACE Windows 事件追蹤 (ETW) 追蹤來源
TRACE_PROXY 在 MSDTC Proxy DLL 中產生的追蹤
TRACE_KTMRM 追蹤與核心交易管理員整合
TRACE_VSSBACKUP 追蹤與 Microsoft Visual SourceSafe 備份和還原機制的整合
TRACE_PERFMON 使用性能計數器支持的追蹤

DWORD 值應該是從 0 到 255 的數位。 DWORD 值表示發生的追蹤層級。 下表列出可能的 DWORD 值。

描述
0 const BYTE TRACE_OFF
1 const BYTE TRACE_ERROR
2 const BYTE TRACE_WARNING
3 const BYTE TRACE_INFO
4 const BYTE TRACE_VERBOSE
5 const BYTE TRACE_VERY_VERBOSE
6 const BYTE TRACE_INOUT
0xF0 const BYTE TRACE_OBSCURE
0xFF const BYTE TRACE_EVERYTHING

注意事項

較高的值會自動包含較低的值。 因此,當您啟用層 TRACE_INFO 級時, TRACE_ERROR 也會啟用層級。 很少的來源會使用任何高於層級的 TRACE_VERBOSE 追蹤。

設定追蹤輸出

警告

Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft 不保證可以解決這些問題。 Modify the registry at your own risk.

登錄 Output 機碼包含一組值,可控制傳送追蹤輸出的位置。 這些值如下所示:

  • TraceFilePath (REG_SZ) 值是應該儲存追蹤檔案的根資料夾。 追蹤會寫入資料夾中名為 msdtc-X.log 的檔案。 在此資料夾名稱中, X 代表建立檔案之進程的十進位 PID。 請確定所有感興趣的程式都可以存取已設定的資料夾。 否則,追蹤資訊將會遺失。 如果未設定此值,則不會將追蹤傳送至檔案。

  • ImageNameInTraceFileNameEnabled (REG_DWORD) 值會判斷所產生的追蹤記錄檔名稱是否包含叫用追蹤記錄之進程的圖像檔名。 如果將此值設定為非零值,進程的圖像檔名將會包含在產生的追蹤記錄檔中。 如果此值設定為零,進程的圖像文件名將不會包含在所產生的追蹤記錄檔中。 根據預設,值會設定為零 (0) 。 下列是追蹤檔名的範例,其中產生的記錄檔包含進程:
    MSDTC-msdtc.exe-3552.logMSDTC-svchost.exe - 3556.log

  • MemoryBufferSize (REG_DWORD) 值是儲存追蹤訊息的循環緩衝區大小。 如果此值設定為 0,則會停用記憶體追蹤。 根據預設,此值為 10 MB。 如果您啟用詳細資訊追蹤,可能必須增加此值。

  • DebugOutEnabled (REG_DWORD) 值會啟用或停用調試程序的輸出。 如果值為非零值,則會啟用輸出。 根據預設,此 Output 登錄機碼已停用。 當您變更連接管理器錯誤追蹤組態時,當載入 Msdtcprx.dll 檔案的進程回收時,變更就會生效。 例如,在回收 MS DTC 服務程式時,連接管理器錯誤追蹤組態的變更會生效。

或者,您可以建立.reg檔案,然後使用登錄 編輯器 匯入檔案。 如果要執行這項操作,請依照下列步驟執行:

  1. 建立包含下列程式代碼範例的新.reg檔案:

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing]
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Output]
    "DebugOutEnabled"=dword:00000000
    "TraceFilePath"=""
    "MemoryBufferSize"=dword:0000000a
    "ImageNameInTraceFileNameEnabled"=dword:00000001
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Tracing\Sources]
    "TRACE_MISC"=dword:00000000
    "TRACE_CM"=dword:00000000
    "TRACE_TRACE"=dword:00000000
    "TRACE_SVC"=dword:00000000
    "TRACE_GATEWAY"=dword:00000000
    "TRACE_UI"=dword:00000000
    "TRACE_CONTACT"=dword:00000000
    "TRACE_UTIL"=dword:00000000
    "TRACE_CLUSTER"=dword:00000000
    "TRACE_RESOURCE"=dword:00000000
    "TRACE_TIP"=dword:00000000
    "TRACE_XA"=dword:00000000
    "TRACE_LOG"=dword:00000000
    "TRACE_MTXOCI"=dword:00000000
    "TRACE_ETWTRACE"=dword:00000000
    "TRACE_PROXY"=dword:00000000
    "TRACE_KTMRM"=dword:00000000
    "TRACE_VSSBACKUP"=dword:00000000
    
  2. 取 [啟動>所有程式>配件>執行],輸入 regedit,然後按兩下 [ 確定]

  3. 在 [ 檔案] 功能表上,選取 [ 匯入]

  4. 找出您在步驟 1 中建立的檔案,然後選取 [ 開啟]。 [登錄 編輯器] 對話框隨即出現。

  5. 選取 [確定]

  6. 選取 [檔案] 功能表上的 [結束]

效能效果

根據預設,Windows 會停用追蹤功能。 因此,一般安裝不會有任何效能影響。

除非 Microsoft 客戶支援專業人員指出需要追蹤資訊才能診斷問題,否則請勿在生產電腦上啟用追蹤功能。 追蹤可能會影響電腦效能。 首先,您必須找到問題,而且必須加以解決。 然後,立即停用追蹤功能。

叢集設定

針對叢集安裝,請確定所有節點上的所有登錄專案都包含這些登錄專案。 對於沒有這些登錄專案的任何節點,叢集程式代碼會忽略共用登錄中的登錄專案,因為登錄專案不存在於本機計算機登錄中。