SQLServer分散式交易問題

來源:互聯網
上載者:User

一、 問題現象

在執行 SQL Server分散式交易時,在SQL Server 2005下收到如下錯誤:

訊息 7391,層級 16,狀態 2,過程 xxxxx,第 16 行

無法執行該操作,因為連結的伺服器 "xxxxx" 的 OLE DB 提供者 "SQLNCLI" 無法啟動分散式交易。

在SQL Server 2000下收到如下錯誤:

該操作未能執行,因為 OLE DB 提供者 'SQLOLEDB' 無法啟動分散式交易。

[OLE/DB provider returned message: 新事務不能登記到指定的交易處理器中。 ]

OLE DB 錯誤跟蹤[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

二、 解決方案

1. 雙方啟動MSDTC服務

MSDTC服務提供分散式交易服務,如果要在資料庫中使用 SQL Server分散式交易,必須在參與的雙方伺服器啟動MSDTC(Distributed Transaction Coordinator)服務。

2. 開啟雙方135連接埠

MSDTC服務依賴於RPC(Remote Procedure Call (RPC))服務,RPC使用135連接埠,保證RPC服務啟動,如果伺服器有防火牆,保證135連接埠不被防火牆擋住。

使用“telnet IP 135 ”命令測試對方連接埠是否對外開放。也可用連接埠掃描軟體(比如Advanced Port Scanner)掃描連接埠以判斷連接埠是否開放。

3. 保證連結的伺服器中語句沒有訪問發起事務伺服器的操作

在發起事務的伺服器執行連結的伺服器上的查詢、視圖或預存程序中含有訪問發起事務伺服器的操作,這樣的操作叫做環回(loopback),是不被支援的,所以要保證在連結的伺服器中不存在此類操作。

4. 在事務開始前加入set xact_abort ON語句

對於大多數 OLE DB 提供者(包括 SQL Server),必須將隱式或顯示事務中的資料修改語句中的 XACT_ABORT 設定為 ON。唯一不需要該選項的情況是在提供者支援嵌套事務時。

5. MSDTC設定

開啟“管理工具――元件服務”,以此開啟“元件服務――電腦”,在“我的電腦”上點擊右鍵。在MSDTC選項卡中,點擊“安全配置”按鈕。

在安全配置視窗中做如下設定:

l 選中“網路DTC訪問”

l 在用戶端管理中選中“允許遠程用戶端”“允許遠端管理”

l 在交易管理通訊中選“允許入站”“允許出站”“不要求進行驗證”

l 保證DTC登陸賬戶為:NT Authority\NetworkService

6. 連結的伺服器和名稱解析問題

建立連結SQL Server伺服器,通常有兩種情況:

l 第一種情況,產品選”SQL Server”

EXEC sp_addlinkedserver @server='linkServerName', @srvproduct = N'SQL Server'
這種情況,@server (linkServerName)就是要連結的sqlserver伺服器名或者ip地址。

l 第二種情況,提供者選“Microsoft OLE DB Provider SQL Server”或“Sql Native Client”

EXEC sp_addlinkedserver @server=' linkServerName ', @srvproduct='', @provider='SQLNCLI', @datasrc='sqlServerName'
這種情況,@datasrc(sqlServerName)就是要連結的實際sqlserver伺服器名或者ip地址。

SQL Server資料庫引擎是通過上面設定的伺服器名或者ip地址訪問連結的伺服器,DTC服務也是通過伺服器名或者ip地址訪問連結的伺服器,所以要保證資料庫引擎和DTC都能通過伺服器名或者ip地址訪問到連結的伺服器。

以上的相關內容就是對 SQL Server分散式交易解決方案的介紹,望你能有所收穫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.