SQL Server的Linked Servers(鏈接)


我們在使用SQL Server時,有時會有這種需求,需要從一個SQL Server服務器A中,查詢另一個SQL Server服務器B中的表,然后將SQL Server服務器A中的表和SQL Server服務器B中的表進行JOIN,像類似這種跨SQL Server服務器的SQL語句操作,我們就可以通過在SQL Server中建立Linked Servers來實現。

 

可以通過下面兩篇微軟的官方文檔,來了解如何在SQL Server中建立Linked Servers:

Linked Servers (Database Engine)

Create Linked Servers (SQL Server Database Engine)

 

注意文章中這里有提到,如果建立Linked Server的遠程數據庫也是SQL Server(Linked Servers不光可以建立到SQL Server的遠程連接,還可以建立到其它類型數據庫,例如Oracle的遠程連接),那么我們可以通過Linked Server來調用遠程SQL Server數據庫中的存儲過程:

If the linked server is defined as an instance of SQL Server, remote stored procedures can be executed.

文章中這里有提到,訪問Linked Server中遠程數據庫對象的格式如下,由四部分組成:

linked_server_name.catalog.schema.object_name

其中:

  • linked_server_name是定義的Linked Server名稱
  • catalog是遠程數據庫的名字
  • schema是遠程數據庫中的架構名
  • object_name是遠程數據庫中的對象名,如:表名,視圖名,存儲過程名等

 

其實在SQL Server Management Studio(SSMS)中建立Linked Server時,在General選項卡中,最重要的就是填寫下面幾個參數:

 

  • Linked server:Linked Server的名稱
  • Provider:遠程數據庫類型的提供程序
  • Data source:遠程數據庫服務器的名稱或者IP地址
  • Catalog:遠程數據庫的名字

然后在Security選項卡,輸入登錄遠程數據庫的用戶名和密碼:

最后需要注意,在Server Options選項卡上,我們要設置RPC和RPC Out兩個選項為True,這樣可以避免很多問題:

這樣就使用SSMS建立好一個Linked Server了:

 

建立好Linked Server之后,我們還可以對遠程數據庫中的對象定義同義詞(synonym),通過同義詞(synonym)來簡化使用Linked Server名稱訪問遠程數據庫對象,詳情查看:

Synonyms (Database Engine)

CREATE SYNONYM (Transact-SQL)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM