首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

解決 Windows 2003 + SQL 2000 OLEDB 分散式交易無法啟動 (MSDTC 錯誤 7391/8520)

     編輯:關於SqlServer

錯誤現象

訊息 7391,層級 16:OLE DB 提供者 'SQLOLEDB' 無法啟動分散式交易。
[OLE/DB provider returned message: 無法在指定的交易管理器中取得新交易。]

訊息 8520,層級 20:內部 MSDTC 交易認可失敗: Result Code = 0x8004d019。

常見但往往無效的方案(方法一)

  1. 註冊表 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC 新增 DWORD TurnOffRpcSecurity = 1。
  2. 重啟 MSDTC 服務。
  3. 元件服務 → 我的電腦 → 屬性 → MSDTC 標籤:勾選「網路 DTC 存取」、「網路管理」、「網路交易」、「XA 交易」,「DTC 登入帳戶」設為 NT Authority\NetworkService。
  4. 重啟 MSDTC,刪除 TurnOffRpcSecurity。

實測此法在 Win2003 + SQL2000 環境多數無效。

實測有效的完整方案(方法二)

  1. 先執行上述方法一完整流程。
  2. 安裝 Windows 2003 SP1(關鍵):SP1 後 MSDTC 安全性架構重大更新,元件服務介面新增「交易管理通訊」區塊,可選 「不要求驗證」。
  3. 建議安裝 MDAC 2.8 或更新版本。
  4. 雙向配置 Hosts 檔:C:\Windows\system32\drivers\etc\hosts 雙方互相加入 IP 對應主機名。
    範例:
    192.168.1.2 CenterServer
    192.168.1.3 WestStation
  5. 重啟雙方 MSDTC 服務(或重啟伺服器)。

核心原理

  • Win2003 RTM 版 MSDTC RPC 安全性預設過嚴,導致跨機器交易協調失敗。
  • SP1 引入「不要求驗證」選項,允許無 Kerberos/憑證環境下的工作群組/非信任網域交易。
  • Hosts 檔解決 NetBIOS/DNS 解析失敗導致 MSDTC 夥伴識別失敗。

驗證方式

使用 DTCPing 工具(Microsoft 支援網站下載)雙向測試 MSDTC 連通性,綠燈即正常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved