


SQL server中鏈接服務(wù)器將替代遠程服務(wù)器
遠程服務(wù)器配置可以使得數(shù)據(jù)庫管理員在服務(wù)器以外的主機上連接到一個SQL Server實例,以便管理員在沒有建立單據(jù)連接的情況下在其他的SQL Server實例上執(zhí)行存儲過程等相關(guān)操作。在遠程服務(wù)器配置模式下,客戶端所連接發(fā)服務(wù)器接受客戶端的請求,并代表客戶端把這個請求發(fā)送到遠程的數(shù)據(jù)庫服務(wù)器。遠程服務(wù)器執(zhí)行完畢后,會把執(zhí)行報告返回給原始的服務(wù)器。然后這個原始服務(wù)器再把結(jié)果傳遞給客戶端。不過在SQL Server中,之所以要實現(xiàn)這種技術(shù),主要是出于兼容性的需要。出于安全、性能方面的考慮,現(xiàn)在微軟官方是建議數(shù)據(jù)庫管理員通過鏈接服務(wù)器功能來對服務(wù)器進遠程操作。因為鏈接服務(wù)器可以比遠程服務(wù)器提供更高的安全性與更好的性能。
一、鏈接服務(wù)器的優(yōu)點。
在遠程服務(wù)器模式下,客戶端是通過另外一個SQL Server數(shù)據(jù)庫服務(wù)器連接到遠程的SQL Server數(shù)據(jù)庫服務(wù)器中。而鏈接服務(wù)器模式下,客戶端是通過鏈接服務(wù)器連接到遠程的SQL Server數(shù)據(jù)庫服務(wù)器中。也就是說,微軟專門開發(fā)了一個鏈接服務(wù)器,用來跟遠程的數(shù)據(jù)庫進行鏈接。由于這個鏈接服務(wù)器是一個獨立于SQL Server數(shù)據(jù)庫的服務(wù)器,所以,其性能會比遠程服務(wù)器配置模式高的多,而且安全性也有所保障。
如鏈接服務(wù)器可以以相同的方式確定不同的數(shù)據(jù)源。如果是遠程服務(wù)器模式,則在客戶端之能夠鏈接到SQL Server數(shù)據(jù)庫。但是,如果管理員采用了鏈接服務(wù)器的話,那么遠程客戶端不僅可以訪問SQL Server數(shù)據(jù)庫;而且還可以訪問其他數(shù)據(jù)源,如Oracle、Acess等數(shù)據(jù)庫。當管理員需要實現(xiàn)數(shù)據(jù)遷移,把其他數(shù)據(jù)庫中的數(shù)據(jù)遷移到SQL Server數(shù)據(jù)庫中,將變得非常有用。而且,在鏈接服務(wù)器模式下,管理員還可以對企業(yè)內(nèi)的異類數(shù)據(jù)源發(fā)出分布式查詢、更新等操作。
所以說,鏈接服務(wù)器模式在性能上,比遠程服務(wù)器模式更勝一籌。那么在安全性上,其又有什么杰出表現(xiàn)呢?
二、登陸名映射提高鏈接服務(wù)的安全性。
如果客戶端通過鏈接服務(wù)器訪問遠程數(shù)據(jù)庫時,發(fā)送服務(wù)器必須提供登陸名和密碼以代表自己連接到接收服務(wù)器。而這個過程,是通過SQL Server數(shù)據(jù)庫系統(tǒng)存儲過程實現(xiàn)的。這種技術(shù),就叫做登錄名映射。
鏈接服務(wù)器登錄名映射為特定的鏈接服務(wù)器和本地登錄名建立遠程登陸名和遠程密碼。在客戶端連接到鏈接服務(wù)器以執(zhí)行查詢或者存儲過程時,數(shù)據(jù)庫會查找正在執(zhí)行查詢或者存儲過程的當前登錄名的登陸名映射。如果找到一個合適的登陸名映射時,則數(shù)據(jù)庫在連接到鏈接服務(wù)器時會發(fā)送相應(yīng)的遠程登陸名和密碼。這看起來好像是在繞口令,比較難以理解。這也正常。筆者剛接觸到這個鏈接服務(wù)器時,也想了幾個小時,才弄明白什么叫做登陸名映射。其實我們可以簡單的理解。即到客戶端鏈接到鏈接服務(wù)器時,鏈接服務(wù)器需要先對客戶端的身份進行驗證。而其驗證的依據(jù)就是遠程數(shù)據(jù)庫是與鏈接服務(wù)器建立了登陸名映射。也就說,鏈接服務(wù)器在其中起著“保安”的作用,會先確定訪問者的合法身份。
可見,通過登陸名映射可以在很大程度上提高遠程數(shù)據(jù)庫服務(wù)的安全性。
三、鏈接服務(wù)器的實現(xiàn)方式。
鏈接服務(wù)器的部署是非常簡單的。在SQLServer的管理控制臺中,只需要通過幾個簡單的步驟即可。不過在談具體的配置之前,還必須先要來了解一個新內(nèi)容,即OLE數(shù)據(jù)庫接口。
上面我們在談到鏈接服務(wù)器性能的時候,說過管理員可以通過鏈接服務(wù)器來訪問呢不同的數(shù)據(jù)源。其實,這都是OLE數(shù)據(jù)庫接口的功勞。OLE數(shù)據(jù)庫訪問接口是用來管理特定數(shù)據(jù)源并且與其進行交互的工具。其實,他是一個DLL文件,即動態(tài)鏈接庫文件。這個文件往往不能夠單獨運行,但是它允許應(yīng)用程序共享執(zhí)行特殊任務(wù)所必須的代碼和其他內(nèi)容。而OLE數(shù)據(jù)源標示可通過OLE來訪問特定的數(shù)據(jù)庫。有了OLE的幫助,使得鏈接服務(wù)器不僅可以訪問各大品牌的數(shù)據(jù)庫,還可以訪問一些非數(shù)據(jù)庫的數(shù)據(jù)文件,如Excel、帶有固定格式的文本文件等等。
而且,OLE接口參數(shù)還可以對某些操作進行控制。因為不同的數(shù)據(jù)庫都對標準的SQL語句進行了擴充。也就是說,某些特殊的語法只有特定的數(shù)據(jù)庫系統(tǒng)才能夠執(zhí)行。為了保證SQL語句的通用性,可以在OLE接口參數(shù)中進行一些配置,來防止管理員執(zhí)行一些不兼容的SQL語句。如在OLE接口中,有一個 NestedQueries的參數(shù)。它主要用來控制是否允許在From子句中潛套Select語句。如果把這個參數(shù)設(shè)置為0,就表示不允許在From子句中使用嵌套的Select語句。如果非0,則表明訪問接口允許在From子句中使用嵌套的Select語句。筆者有時候經(jīng)常利用這個參數(shù)來對一些操作進行控制。如可以通過這個選項,使得數(shù)據(jù)庫管理員能夠?qū)⒛承┎樵兾薪o需要在From子句中嵌套Select語句的訪問接口。
通過接口還可以控制操作者是否有更新權(quán)限,即通過鏈接服務(wù)器訪問遠程數(shù)據(jù)庫時,能否對數(shù)據(jù)庫進行更新操作。如要進行這個控制,則可以使用 NonTransactedUpdates參數(shù)。如果這個參數(shù)為0,則允許進行更新。反之,則不允許更新。不過如果啟用了更新的話,需要注意一個問題。由于訪問接口不支持事務(wù),則通過鏈接服務(wù)器更新的數(shù)據(jù),將不可恢復(fù)。
鏈接服務(wù)器可以采用SQL Server自帶的OLE接口,也可以采用第三方的接口。但是,如果采用第三方的OLE數(shù)據(jù)庫接口的話,需要注意運行SQL Server服務(wù)的帳戶必須具有對安裝訪問接口的目錄以及所有子目錄具有讀取權(quán)限和執(zhí)行權(quán)限。在大部分情況下,筆者建議還是采用數(shù)據(jù)庫自帶的OLE接口,以減少配置的工作量。
四、如何定義鏈接服務(wù)器。
在SQL Server數(shù)據(jù)庫中,鏈接服務(wù)器定義主要有兩種方式。一是通過數(shù)據(jù)庫自帶的存儲過程來進行定義;二是通過管理控制臺來進行部署。
筆者比較喜歡采用系統(tǒng)存儲過程和目錄視圖來管理鏈接服務(wù)器。如可以通過SP-addlinkedserver存儲過程來創(chuàng)建服務(wù)器定義。如果需要查看鏈接服務(wù)器的信息,則可以通過SYS.SERVERS系統(tǒng)目錄視圖進行查詢。如果要刪除鏈接服務(wù)的話,也可以通過存儲過程來刪除。
如果初學(xué)者覺得通過存儲過程與視圖的方式不夠直觀,則可以通過數(shù)據(jù)庫的管理控制臺來進行鏈接服務(wù)器的定義。這個步驟也很簡單。在數(shù)據(jù)庫的對象資源管理器中,右鍵單擊服務(wù)器對象,選擇新建,再選擇鏈接服務(wù)器即可。如果要刪除連接服務(wù),則選中需要刪除的鏈接服務(wù)器,選擇刪除即可。通常情況下,不需要對OLE的接口參數(shù)進行調(diào)整。如果對于性能、安全等要求比較高,或者有多個管理員同時管理數(shù)據(jù)庫的時候,則可以通過對OLE部分參數(shù)進行調(diào)整。如筆者上面談到的控制是否允許更新等相關(guān)參數(shù)。對于初學(xué)者來說,筆者不建議對這些參數(shù)進行調(diào)整。因為如果調(diào)整不得法的話,會導(dǎo)致鏈接服務(wù)器無法正常工作。而且這個錯誤很難排查。
鏈接服務(wù)器除了可以幫助管理員輕松訪問不同的數(shù)據(jù)源之外,在分布式查詢中也特別有用。當用戶利用客戶端應(yīng)用程序通過鏈接服務(wù)器執(zhí)行分布式查詢時,數(shù)據(jù)庫將會分析鏈接服務(wù)器傳送過來的語句。行集請求的形式可以是對該訪問接口執(zhí)行查詢或者從該訪問接口直接打開基表。
關(guān)鍵字:服務(wù)器、SQL server、數(shù)據(jù)庫
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解