解決windows 2003+Sql2000中OLEDB分布式事務無法啟動的解決方案
在開發分布式數據庫軟件時,經常碰到下面的錯誤:服務器: 消息 7391,級別 16,狀態 1,行 6該操作未能執行,因為 OLE DB 提供程序 'SQLOLEDB' 無法啟動分布式事務。[OLE/DB provider returned message: 不能在指定的事務處理器中獲得新事務。]-----------------------------------------服務器: 消息 8520,級別 20,狀態 1,行 8內部 MSDTC 事務的提交失敗: Result Code = 0x8004d019。
連接中斷-----------------------------------------搜索了網上類似問題的解決方案,都建議采用下面的方法(方法一):1、運行 regedt32,瀏覽至 HKEY_LOCAL_MACHINE oftwareMicrosoftMSDTC。添加一個 DWORD 值 TurnOffRpcSecurity,值數據為 1。2、重啟MS DTC服務。3、打開“管理工具”的“組件服務”。 a. 瀏覽至'啟動管理工具'。;b. 選擇'組件服務'。;c. 展開'組件服務'樹,然后展開'我的電腦'。;d. 右鍵單擊'我的電腦',然后選擇'屬性'。;;在 MSDTC 選項卡中,確保選中了下列選項: 網絡 DTC 訪問 網絡管理 網絡事務XA 事務另外,'DTC 登錄帳戶'一定要設置為'NT AuthorityNetworkService'。4、重啟MS DTC服務。5、再次運行 regedt32,瀏覽至 HKEY_LOCAL_MACHINE oftwareMicrosoftMSDTC,然后刪除 TurnOffRpcSecurity 項。
但是實際上該方法基本上解決不了問題,經過長時間的反復實踐,我終于按下面的方法解決了:(方法二)1、按照方法一的方法處理一遍,如果不行,再繼續下面的方法2、安裝windows 2003 sp1,安裝好后,方法一中的第4步設置對話框和原來不一樣了,選擇“事務管理通訊”中的“不要求驗證”3、最好安裝好MDAC2.83、通過查找,在C:找到名為“hosts”的文件(沒有擴展名),通常路徑為C:WINDOWSsystem32driversetc,將對方服務器的IP和計算機對應起來,參考如下:========================================# Copyright (c) 1993-1999 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.# www.mypchelp.cn# This file contains the mappings of IP addresses to host names. Each# entry should be kept on an individual line. The IP address should# be placed in the first column followed by the corresponding host name.# The IP address and the host name should be separated by at least one# space.## Additionally, comments (such as these) may be inserted on individual# lines or following the machine name denoted by a '#' symbol.## For example:##;;;102.54.94.97;;rhino.acme.com; # source server#;;;;38.25.63.10;;x.acme.com;;;# x client host
127.0.0.1 localhost192.168.1.2 中心192.168.1.3 西站192.168.106.35 信息中心2=============================================一定要將每臺服務器的hosts文件都修改好通過以上辦法,我的分布式就可以正常運行了,速度也非常快
