MSSQL server分散式事務解決方案
本篇文章由 泉州SEO www.234yp.com 整理髮布,mssql是什麼 www.234yp.com/Article/168183.html 謝謝合作!
mssql是什麼
適用環境
作業系統:windows 2003
資料庫:sql server 2000/sql server 2003
使用連結伺服器進行遠端資料庫訪問的情況
一、問題現象
在執行分散式事務時,在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服務提供分散式事務服務,如果要在資料庫中使用分散式事務,必須在參與的雙方伺服器啟動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登陸賬戶為:NTAuthority\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地址訪問到連結伺服器。
資料庫引擎和DTC解析伺服器的方式不太一樣,下面分別敘述
6.1資料庫引擎
第一種情況的@server或者第二種情況的@datasrc設定為ip地址時,資料庫引擎會根據ip地址訪問連結伺服器,這時不需要做名稱解析。
第一種情況的@server或者第二種情況的@datasrc設定為sql server伺服器名時,需要做名稱解析,就是把伺服器名解析為ip地址。
有兩個辦法解析伺服器名:
一是在sql server客戶端配置中設定一個別名,將上面的伺服器名對應到連結伺服器的ip地址。
二是在“C:\WINDOWS\system32\drivers\etc\hosts”檔案中增加一條記錄:
xxx.xxx.xxx.xxx伺服器名
作用同樣是把伺服器名對應到連結伺服器的ip地址。
6.2DTC
不管哪一種情況,只要@server設定的是伺服器名而不是ip地址,就需要進行名稱解析,辦法同上面第二種辦法,在hosts檔案中增加解析記錄,上面的第一種辦法對DTC不起作用。
如果@server設定的是ip地址,同樣不需要做域名解析工作。
關於更多mssql是什麼內容,可以收藏本網頁。
泉州SEO專注SEO領域的資訊傳播與推廣,立足泉州本土!服務泉州本土網路推廣從業人員,主要針對泉州網站優化,網站推廣,泉州SEO知識分享。
相關文章
- 分散式事務解決方案分散式
- SpringCloud 分散式事務解決方案SpringGCCloud分散式
- 常用的分散式事務解決方案分散式
- 分散式事務解決方案彙總分散式
- 分散式事務解決方案--GTS(二)分散式
- 分散式事務解決方案--GTS(一)分散式
- 分散式事務解決方案(五)【TCC型方案】分散式
- 分散式事務解決方案(一)【介紹】分散式
- 分散式事務(2)---強一致性分散式事務解決方案分散式
- 微服務架構及分散式事務解決方案微服務架構分散式
- MSSQL Server 遷移至 ORACLE解決方案SQLServerOracle
- 分散式事務解決方案(四)【最大努力通知】分散式
- 基於RocketMq的分散式事務解決方案MQ分散式
- 微服務分散式事務4種解決方案實戰微服務分散式
- 分散式事務解決方案——柔性事務與服務模式分散式模式
- 你必須瞭解的分散式事務解決方案分散式
- 分散式事務概述及大廠通用解決方案分散式
- 微服務架構下分散式事務解決方案-hoop(一)微服務架構分散式OOP
- 微服務分散式事務解決方案-開源軟體seata微服務分散式
- 阿里巴巴開源分散式事務解決方案 Fescar阿里分散式
- 來了!阿里開源分散式事務解決方案Fescar阿里分散式
- 來了!阿里開源分散式事務解決方案 Fescar阿里分散式
- 五種分散式事務解決方案(圖文總結)分散式
- 分散式事務解決方案與適用場景分析分散式
- 分散式事務的概念和解決方案Seate分散式
- 阿里巴巴開源分散式事務解決方案 FESCAR【轉】阿里分散式
- 剛柔並濟的開源分散式事務解決方案分散式
- .NET開源的處理分散式事務的解決方案分散式
- 架構師必備的那些分散式事務解決方案!!架構分散式
- 常用的分散式事務解決方案介紹有多少種?分散式
- 分散式事務的理解和常見解決方案彙總分散式
- 深度剖析一站式分散式事務方案Seata(Fescar)-Server分散式Server
- 深度剖析一站式分散式事務方案 Seata(Fescar)-Server分散式Server
- Java微服務下的分散式事務介紹及其解決方案2Java微服務分散式
- 搞懂分散式技術19:使用RocketMQ事務訊息解決分散式事務分散式MQ
- 關於分散式事務帶來的問題及解決方案分散式
- 億級流量架構之分散式事務解決方案對比架構分散式
- 分散式事務處理方案,微服事務處理方案分散式