SQL Server分散式事務處理(MS DTC)-續

cow977發表於2014-02-14
 

對於不同網段的伺服器之間,還存在伺服器名解析問題。

l  (2.2.6)連結伺服器和名稱解析問題

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

u  第一種情況,產品選”sql server

EXEC sp_addlinkedserver @server='linkServerName',@srvproduct = N'SQL Server'

這種情況@server(linkServerName)就是要連結的sqlserver伺服器名或者ip地址。

u  第二種情況訪問介面選“Microsoft OLE DB Provider Sql Server”或“Sql Native Client

EXEC sp_addlinkedserver @server='linkServerName', @srvproduct='',

     @provider='SQLNCLI', @datasrc='sqlServerName'

這種情況,@datasrcsqlServerName)就是要連結的實際sqlserver伺服器名或者ip地址。

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

資料庫引擎和DTC解析伺服器的方式不太一樣,下面分別敘述

資料庫引擎

第一種情況的@server或者第二種情況的@datasrc設定為ip地址時,資料庫引擎會根據ip地址訪問連結伺服器,這時不需要做名稱解析。

第一種情況的@server或者第二種情況的@datasrc設定為sql server伺服器名時,需要做名稱解析,就是把伺服器名解析為ip地址。

有兩個辦法解析伺服器名:

一是在sql server客戶端配置中設定一個別名,將上面的伺服器名對應到連結伺服器的ip地址。

二是在hosts檔案中增加一條記錄:

xxx.xxx.xxx.xxx    伺服器名

DTC

不管哪一種情況,只要@server設定的是伺服器名而不是ip地址,就需要進行名稱解析,辦法同上面第二種辦法,在hosts檔案中增加解析記錄,上面的第一種辦法對DTC不起作用。

如果@server設定的是ip地址,同樣不需要做域名解析工作

l  (2.2.7)遠端伺服器上的名稱解析

分散式事務的參與伺服器是需要相互訪問的,發起查詢的伺服器要根據機器名或ip查詢遠端伺服器的,同樣遠端伺服器也要查詢發起伺服器,遠端伺服器透過發起伺服器的機器名查詢伺服器,所以要保證遠端伺服器能夠透過發起伺服器的機器名訪問到發起伺服器。一般的,兩個伺服器在同一網段機器名能就行很好的解析,但是也不保證都能很好的解析,所以比較保險的做法是:在遠端伺服器的hosts檔案中增加一條記錄:

xxx.xxx.xxx.xxx    發起伺服器名

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/81227/viewspace-1081308/,如需轉載,請註明出處,否則將追究法律責任。

相關文章