SQL Server 分散式資料庫的問題和解決方案收藏 [ 轉]

來源:互聯網
上載者:User
一、問題現象

假如分散式交易的用戶端和伺服器端(可能N個)不在同一台伺服器上,如分別為應用程式伺服器 和 資料庫伺服器,經常會出現一下錯誤:

① 在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連)。

② 事務已被隱式或顯式提交,或已終止。

③ 該夥伴交易管理員已經禁止了它對遠程/網路事務的支援。 (異常來自 HRESULT:0x8004D025)。(TransactionScope異常)

④ [COMException (0x8004d00e):此事務已明地或暗地被確認或終止 (異常來自 HRESULT:0x8004D00E)]。(MSDTC 分散式交易錯誤)

⑤ Import of MSDTC transaction failed: Result Code = 0x8004d023. (MSDTC安全性配置問題)

二、解決方案

遇到以上的問題或SQL Server分布式的問題,請按照以下步驟設定,問題應該可以得到解決。可能有些步驟對您來說是多餘的,但求全不求漏。

1. 啟動MSDTC服務。

 

MSDTC簡介:MSDTC是Microsoft Distributed Transaction Coordinator的簡稱,即微軟分散式交易協調器,描述:協調跨多個資料庫、訊息佇列、檔案系統等資源管理員的事務。如果停止次服務,則不會發生這些事務。如果禁用此服務,顯式依賴此服務的其他服務將無法啟動。

MSDTC啟動方法:

①“開始”|“運行”,輸入“services.msc”,或者“控制台”|“管理工具”|“服務”,開啟“服務”視窗,在名稱中找到“Distributed Transaction Coordinator”,將其啟動。

②“開始”|“所有程式”|“Microsoft SQL Server”|“服務管理員”,開啟“SQL Server 服務管理器”視窗,選中“Distributed Transaction Coordinator”服務,將其啟動。

 

2. 設定MSDTC組件。

① 檢查作業系統是否安裝DTC組件。XP預設安裝,Win2003預設不安裝。安裝步驟如下:

a. “開始”|“控制台”|“添加/刪除程式”|“添加/刪除Windows組件”,選擇“應用程式伺服器”,單擊“詳細資料”,選擇“啟用網路DTC訪問”,單擊“確定”|“下一步”|“完成”。

b. 停止並重啟MSDTC服務(命令:net stop msdtc和net start msdtc)。

c. 停止參與分散式交易的任何資源管理員服務(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然後重新予以啟動。

 

② “開始”|“運行”,輸入“dcomcnfg”,或者“控制台”|“管理工具”|“元件服務”,開啟“元件服務”視窗,“元件服務”|“電腦”|“我的電腦”,右鍵“屬性”|“MSDTC”,勾選“使用本地協調器”,單擊“安全性配置”,彈出“安全配置”視窗,勾選“網路DTC訪問”、“允許遠程用戶端”、“允許遠端管理”、“允許入站”、“允許出站”、“不要求進行驗證”、“啟用事務Inernet協議(TIP)事務”和“啟用XA事務”(“允許入站”和“允許出站”據具體情況設定,用戶端機器必須“允許出站”,伺服器端機器必須“允許入站”),DTC登陸帳號必須是“NT AUTHORITY"NetworkService”。Vista系統只需勾選“使用本地協調器”即可。

 

③ 配置防火牆以允許與 Msdtc.exe服務的網路通訊。【測試時可以退掉所有的防火牆和殺毒軟體】

 

3. 檢查兩台機器能夠相互ping通Hostname。

注意是機器名,而不是IP。若不可以,進行如下設定:

① 在目錄“%windir%"system32"drivers"etc”下的hosts檔案,寫上IP和HostName的對應資訊,如 “10.25.11.185 GSMAJK”。另外,你也可以使用DTCping工具來測試是否可以在兩台機器之間使用MSDTC,並幫你分析原因,可以到微軟的網站。

 

4. 啟動SQL Server 的分布式遠端連線。

(1) SQL Server 2000:

① “開始”|“所有程式”|“Microsoft SQL Server”|“企業管理器”,滑鼠選中SQL Server 執行個體,如:GSMAJK(Windows NT),右鍵“屬性”,彈出“SQL Server 屬性(配置)”視窗, “串連”|“遠程伺服器串連”,選中“允許其他SQL Server 使用RPC遠端連線到本SQL Server”和“強制分散式交易處理(MTS)”,SQL Server 2000預設情況下是選中的。

② 配置防火牆以允許與 SQL Server 服務相關的網路通訊。【測試時可以退掉所有的防火牆和殺毒軟體】

 

(2) SQL Server 2005:參見如何配置SQL Server 2005 以允許遠程連串連

① 在您要從遠端電腦串連到的SQL Server 執行個體上啟用遠端連線。

“開始”|“所有程式”|“Microsoft SQL Server 2005”|“組態工具”|“SQL Server介面區配置器”,單擊“服務和串連的介面區配置器”|“資料庫引擎”,單擊“遠端連線”,選中“本地串連和遠端連線”和“同事使用TCP/IP和named pipes”,然後單擊“應用”。在接收到訊息“直到重新啟動資料庫引擎服務後,對串連設定所做的更改才會生效”後,單擊“確定”。單擊“服務”,檢查“MSSQLSERVER服務”是否啟動。

② 開啟 SQL Server Browser 服務。

“開始”|“所有程式”|“Microsoft SQL Server 2005”|“組態工具”|“SQL Server介面區配置器”,單擊“服務和串連的介面區配置器”|“SQL Server Browser”,在“啟動類型”中單擊“自動”選項,然後單擊“應用”。 單擊“啟動”,然後單擊“確定”。

③ 配置防火牆以允許與 SQL Server 和 SQL Server Browser 服務相關的網路通訊。【測試時可以退掉所有的防火牆和殺毒軟體】

 

5. SQL Server是否安裝必須的補丁。

如SQL Server 2000的SP4。

 

 

在一次.NET開發中,問題現象中①②③條全遇到了,弄了好幾天都沒有解決,後來,查看資料庫版本,一個是SQL Server 2000 SP3,一個是SQL Server 2000 RTM,我就在後者的基礎上安裝了SQL Server 2000 SP4,結果問題解決。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.