在開發分散式資料庫應用時,常遇到以下錯誤訊息:
伺服器: 訊息 7391,層級 16,狀態 1,行 6
該作業無法執行,因為 OLE DB 提供者 'SQLOLEDB' 無法啟動分散式交易。
[OLE/DB 提供者傳回訊息: 無法在指定的交易處理器中取得新交易。]伺服器: 訊息 8520,層級 20,狀態 1,行 8
內部 MSDTC 交易的認可失敗: Result Code = 0x8004d019。
連線中斷
網路上流傳的標準解決步驟如下:
regedt32,瀏覽至 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC,新增 DWORD 值 TurnOffRpcSecurity,值設為 1。NT Authority\NetworkService。TurnOffRpcSecurity 登錄值。實測發現,此方法在大多數環境下無法徹底解決問題。
hosts 檔案(路徑通常為 C:\Windows\system32\drivers\etc\hosts),將對方 IP 與電腦名稱對應。範例:
# Copyright (c) 1993-1999 Microsoft Corp.
127.0.0.1 localhost
192.168.1.2 中心伺服器
192.168.1.3 西站伺服器
192.168.106.35 資訊中心2
注意:雙方伺服器都必須完成此設定。
核心關鍵在於:安裝 SP1 後啟用「不要求驗證」,並確保雙方主機名稱解析正確。套用此方案後,分散式交易即可正常運作,效能表現優異。