在部署 .NET 應用或資料庫叢集環境時,常遇到「事務管理器可用 (Exception from HRESULT: 0x8004D01B)」錯誤,導致分散式交易失敗。根因通常是 **Distributed Transaction Coordinator (DTC) 服務未啟動或日誌文件損壞**。本文提供從服務啟動失敗到日誌重建的完整排查流程。
System.Runtime.InteropServices.COMException: 事務管理器可用。 (異常來自 HRESULT:0x8004D01B)
在服務管理器中嘗試啟動「Distributed Transaction Coordinator」服務時,服務啟動後隨即停止,系統事件日誌記錄:
Distributed Transaction Coordinator 服務因 3221229584 (0xC0001010) 服務性錯誤而停止。
錯誤碼 0xC0001010 (STATUS_INVALID_DEVICE_REQUEST) 表明 DTC 無法存取其交易日誌文件。常見原因包括:
Microsoft 官方建議使用 msdtc -resetlog 命令重置日誌,步驟如下:
msdtc -resetlogservices.msc) 重新啟動「Distributed Transaction Coordinator」服務。%SystemRoot%\System32\Dtc\Log,確保 Network Service 與 Local System 擁有完全控制權限。msdtc -uninstall 後再 msdtc -install 重新註冊服務(需謹慎操作,會清除現有配置)。服務啟動後,可使用「元件服務」 (dcomcnfg) 進行測試:
完成上述步驟後,原本拋出 0x8004D01B 異常的應用程式應可正常進行分散式交易操作。