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

SQL Server 2000 分布式事務 (MSDTC) 錯誤 8501 根因與修復指南

     編輯:關於SqlServer

Windows .NET Server / Server 2003 上運行鏈接服務器查詢報錯:

Server: Msg 8501, Level 16, State 3
MSDTC on server 'servername' is unavailable

根因:MSDTC 服務賬號不匹配

  • .NET Server 默認要求 MSDTC 以 NT AUTHORITY\NetworkService 運行
  • 若手動改為「本地系統」,RPC 安全性增強導致分布式事務失敗
  • 錯誤日志顯示:ResourceManagerCreationFailed: ResultCode=0x8004d01c

修復步驟(註冊表 + 組件服務雙重保障)

  1. regedt32 → HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC → 新建 DWORD TurnOffRpcSecurity = 1
  2. 命令行:net stop msdtc && net start msdtc
  3. 組件服務 → 我的電腦 → 屬性 → MSDTC 標籤:
    勾選「網絡 DTC 訪問」「網絡管理」「網絡事務」「XA 事務」
    DTC 登錄賬戶 = NT AUTHORITY\NetworkService
  4. 確定 → 服務自動重啟
  5. 刪除註冊表 TurnOffRpcSecurity(安全加固)

伴隨錯誤 7391:網絡 DTC 訪問未啟用

Msg 7391: OLE DB provider 'SQLOLEDB' unable to begin distributed transaction
New transaction cannot enlist in the specified transaction coordinator

同樣通過上述組件服務配置解決。

驗證腳本

EXEC sp_addlinkedserver 'Remote1'
EXEC sp_setnetname 'Remote1', '<RemoteServer>'
GO
SET XACT_ABORT ON
BEGIN TRAN
INSERT INTO Remote1.Pubs.dbo.T VALUES (1)
COMMIT TRAN

分布式事務是跨庫一致性基石,MSDTC 配置錯誤是遷移/升級高發故障點,建議納入部署檢查清單自動化驗證。

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