建立連結的伺服器 (SQL Server Database Engine)

建立連結的伺服器可讓您處理多個來源的資料。連結的伺服器不必是 SQL Server 的另一個執行個體,但那是常見狀況。本主題示範如何建立連結的伺服器以及存取來自其他 SQL Server 的資料。

本主題內容

  • 開始之前:

    背景

    安全性

  • 範例:

    SQL Server Management Studio

    Transact-SQL

  • **待處理:**建立連結的伺服器之後所採取的步驟

背景

連結的伺服器可讓您對 OLE DB 資料來源存取分散式異質性查詢。建立連結的伺服器之後,即可對這部伺服器執行分散式查詢,而且查詢可以加入來自多個資料來源的資料表。如果將連結的伺服器定義為 SQL Server 的執行個體,就可以執行遠端預存程序。

連結之伺服器的功能以及所需的引數可能會大大地改變。本主題中的範例會提供一般範例,但不會描述所有選項。如需詳細資訊,請參閱<sp_addlinkedserver (Transact-SQL)>。

安全性

權限

需要伺服器的 ALTER ANY LINKED SERVER 權限。

[回到頁首]

如何建立連結的伺服器

您可以使用下列任一項:

  • SQL Server Management Studio

  • Transact-SQL

使用 SQL Server Management Studio

若要使用 SQL Server Management Studio 建立與另一個 SQL Server 執行個體的連結伺服器

  1. 在 SQL Server Management Studio 中,開啟 [物件總管],展開 [伺服器物件],以滑鼠右鍵按一下 [連結的伺服器],然後按一下 [新增連結的伺服器]

  2. [一般] 頁面的 [連結的伺服器] 方塊中,輸入您要連結之 [SQL Server] 的執行個體名稱。

    [!附註]

    如果 [SQL Server] 的執行個體是預設的執行個體,請輸入裝載 [SQL Server] 執行個體之電腦的名稱。如果 [SQL Server] 是具名執行個體,輸入電腦的名稱和執行個體的名稱,例如 Accounting\SQLExpress。

  3. [伺服器類型] 區域中,選取 [SQL Server] 表示連結的伺服器是 [SQL Server] 的另一個執行個體。

  4. [安全性] 頁面上,指定原始 SQL Server 連線到連結的伺服器時將使用的安全性內容。在使用者使用其網域登入進行連線的網域環境中,選取 [使用登入的目前安全性內容建立] 通常是最佳選擇。當使用者使用 [SQL Server] 登入連線到原始 [SQL Server] 時,最佳選擇通常是選取 [使用此安全性內容],然後提供所需的認證在連結的伺服器進行驗證。

  5. 按一下 [確定]。

[回到頁首]

使用 Transact-SQL

若要使用 Transact-SQL 建立連結的伺服器,請使用 sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL) 陳述式。

若要使用 Transact-SQL 建立與另一個 SQL Server 執行個體的連結伺服器

  1. 在查詢編輯器中,輸入下列 Transact-SQL 命令來連結名稱為 SRVR002\ACCTG 的 SQL Server 執行個體:

    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver 
        @server = N'SRVR002\ACCTG', 
        @srvproduct=N'SQL Server' ;
    GO
    
  2. 執行下列程式碼來設定連結的伺服器使用將使用連結的伺服器之登入的網域認證。

    EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname = N'SRVR002\ACCTG', 
        @locallogin = NULL , 
        @useself = N'True' ;
    GO
    

[回到頁首]

待處理:建立連結的伺服器之後所採取的步驟

若要測試連結的伺服器

  • 執行下列程式碼來測試連結之伺服器的連線。此範例會傳回連結之伺服器上的資料庫名稱。

    SELECT name FROM [SRVR002\ACCTG].master.sys.sysdatabases ;
    GO
    

撰寫加入來自連結伺服器之資料表的查詢

  • 使用四部分的名稱來表示連結之伺服器上的物件。執行下列程式碼以傳回本機伺服器上的所有登入清單,及其連結之伺服器上相符的登入。

    SELECT local.name AS LocalLogins, linked.name AS LinkedLogins
    FROM master.sys.server_principals AS local
    LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
        ON local.name = linked.name ;
    GO
    

    當連結的伺服器登入傳回 NULL 時,表示該登入不存在連結的伺服器上。除非將連結的伺服器設定為傳遞不同的安全性內容,或連結的伺服器接受匿名連線,否則這些登入將無法使用連結的伺服器。

[回到頁首]