windows server 2003 中 SQL Server 2000 分散式交易 錯誤解決方案
來源:互聯網
上載者:User
server|window|錯誤|分布式|解決 癥狀如果在 Windows .NET Server 上安裝的 SQL Server 2000 中運行連結的伺服器查詢,可能會返回下列錯誤(即使 MSDTC 正在該伺服器上運行):
Server:Msg 8501, Level 16, State 3, Line 3
MSDTC on server 'server name' is unavailable.在 SQL Server 錯誤記錄檔中,您會發現由運行該查詢的 spid 引發的下列錯誤:
Resource Manager Creation Failed:Result Code = 0x8004d01c 原因這是設計使然。如果在"本地系統"帳戶下運行"分散式交易協調器服務"就會發生此錯誤。 解決方案最近為了提高 RPC 安全性對 DTC 所做的更改要求 MSDTC 作為"NT Authority\NetworkService"運行。這是 .NET Server 的預設選項。在 Windows NT 和 Windows 2000 中,預設情況下 MSDTC 服務是在"本地系統"帳戶下啟動並執行。
a. 瀏覽至"啟動管理工具"。b. 選擇"元件服務"。c. 展開"元件服務"樹,然後展開"我的電腦"。d. 按右鍵"我的電腦",然後選擇"屬性"。e. 在 MSDTC 選項卡中,確保選中了下列選項:
網路 DTC 訪問網路管理網路事務XA 交易
另外,"DTC 登入帳戶"一定要設定為"NT Authority\NetworkService"。f. 單擊"確定"。這樣將會提示您"MS DTC 將會停止並重新啟動。所有的依賴服務將被停止。請按'是'繼續"。單擊"是"繼續。g. 單擊"確定"關閉"我的電腦"屬性視窗。4.再次運行 regedt32,瀏覽至 HKEY_LOCAL_MACHINE oftware\Microsoft\MSDTC,然後刪除 TurnOffRpcSecurity 項。現在您的 MSDTC 服務應該在"NT Authority\NetworkService"帳戶下運行了,並且不會再出現該錯誤。
更多資訊
當"MSDTC 安全性"配置下的"網路 DTC 訪問"禁用時,如果運行連結的伺服器查詢則會返回下列錯誤:
Server:Msg 7391, Level 16, State 1, Line 2 The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.[OLE/DB provider returned message:New transaction cannot enlist in the specified transaction coordinator.]
跟蹤標記 7300 開啟時: Server:Msg 7391, Level 16, State 1, Line 2 The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.[OLE/DB provider returned message:New transaction cannot enlist in the specified transaction coordinator.] OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].MSDTC 服務一定要按照上面"解決方案"一節中的說明進行設定,才能防止此錯誤。
再現現象的步驟 1.轉至"啟動管理工具服務"。2.按右鍵"分散式交易協調器"服務,轉至"登入"選項卡,選擇"登入身份"下的"本地系統"帳戶。3.停止然後重新啟動該服務。4.從查詢分析器,運行下列指令碼:
exec sp_addlinkedserver remote1exec sp_setnetname remote1, <remote server name>goexec remote1.pubs.dbo.sp_executesql N'create table t (c1 int)'goset xact_abort ongobegin traninsert into remote1.pubs.dbo.t values (1)commit trango