遠端伺服器

適用於:SQL Server

SQL Server 支援遠端伺服器僅為了回溯相容性。 新應用程式應該改用連結的伺服器。 如需詳細資訊,請參閱連結的伺服器 (資料庫引擎)

遠端伺服器設定可讓連線到某一個 SQL Server 執行個體的用戶端,不需建立另一個連線,就可以在另一個 SQL Server 執行個體上執行預存程序。 而且,與用戶端連接的伺服器會接受用戶端的要求,並以用戶端的身分將要求傳送至遠端伺服器。 遠端伺服器會處理要求並將任何結果傳回到原始伺服器。 此伺服器接著就會將結果傳遞至用戶端。 設定遠端伺服器組態時,您應該也要考慮如何建立安全性。

如果您想要設定伺服器組態來執行另一個伺服器上的預存程序,但是並沒有現有的遠端伺服器組態時,請使用連結的伺服器來代替遠端伺服器。 對於連結的伺服器,您可以執行預存程序與分散式查詢;但是對於遠端伺服器,您只能執行預存程序。

遠端伺服器詳細資料

遠端伺服器是以配對設定。 若要設定遠端伺服器的配對,請將兩個伺服器都設定成可以相互辨識另一個為遠端伺服器。

大部份的情況下,您不需要設定遠端伺服器的組態選項。 SQL Server Set 會在本機和遠端電腦上設定預設值,以允許遠端伺服器連線。

若要讓遠端伺服器存取可以進行,在本機與遠端電腦上的 [遠端存取] 組態選項都必須設定為 1 (這是預設值)。遠端存取會控制從遠端伺服器登入。 您可以使用 Transact-SQL sp_configure 預存程序或 SQL Server Management Studio 來重設此設定選項。 若要重設 SQL Server Management Studio 中的選項,在 [伺服器屬性連線] 頁面上,使用 [允許此伺服器的遠端連線]。 若要存取 [伺服器屬性連接] 頁面,請在物件總管中以滑鼠右鍵按一下伺服器名稱,然後按一下 [屬性]。 在 [伺服器屬性] 頁面上,按一下 [連接] 頁面。

您可以從本機伺服器來停用遠端伺服器組態,以防止其配對遠端伺服器上的使用者存取本機伺服器。

遠端伺服器的安全性

若要對遠端伺服器啟用遠端程序呼叫 (RPC),您必須在遠端伺服器上,甚至在執行 SQL Server 執行個體的本機伺服器上,設定登入對應。 預設會在 SQL Server 中停用 RPC。 此組態以減少其可攻擊介面區來加強伺服器的安全性。 在使用 RPC 之前,您必須先啟用此功能。 如需詳細資訊,請參閱 sp_configure (Transact-SQL)

設定遠端伺服器

必須在遠端伺服器上設定遠端登入對應。 使用這些對應,遠端伺服器便可將來自指定伺服器之 RPC 連接的內送登入對應到本機登入。 遠端登入對應可使用 sp_addremotelogin 預存程序在遠端伺服器上進行設定。

注意

SQL Server 不支援 sp_remoteoptiontrusted 選項。

設定本機伺服器

針對 SQL Server 驗證本機登入,您不需要在本機伺服器上設定登入對應。 SQL Server 會使用本機登入和密碼來連線到遠端伺服器。 針對 Windows 驗證登入,在本機伺服器上設定本機登入對應,以定義 SQL Server 執行個體在建立與遠端伺服器之 RPC 連線時使用的登入與密碼。

若為 Windows 驗證所建立的登入,則您必須使用 sp_addlinkedservlogin 預存程序,來建立登入名稱與密碼的對應。 這個登入名稱與密碼必須與遠端伺服器所預期的內送登入和密碼相符,如同 sp_addremotelogin所建立的一樣。

注意

盡可能使用 Windows 驗證。

遠端伺服器安全性的範例

考量這些 SQL Server 安裝:serverSendserverReceiveserverReceive 的設定是將來自 serverSend 的輸入登入 (稱為 Sales_Mary) 對應到 serverReceive 中的 SQL Server 驗證登入 (稱為 Alice)。 另一個來自 serverSend 的輸入登入 (稱為 Joe) 會對應到 serverReceive 中的 SQL Server 驗證登入 (稱為 Joe)。

下列的 Transact-SQL 程式碼範例會將 serverSend 設定為對 serverReceive 執行 RPC。

--Create remote server entry for RPCs   
--from serverSend in serverReceive.  
EXEC sp_addserver 'serverSend';  
GO  
  
--Create remote login mapping for login 'Sales_Mary' from serverSend  
--to Alice.  
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary';  
GO  
--Create remote login mapping for login Joe from serverReceive   
--to same login.  
--Assumes same password for Joe in both servers.  
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe';  
GO  

serverSend上,會針對 Windows 驗證登入 Sales\Mary 對應於登入 Sales_Mary來建立本機登入對應。 Joe不需本機對應,因為預設會使用相同的登入名稱與密碼,且 serverReceive 會具有 Joe的對應。

--Create a remote server entry for RPCs from serverReceive.  
EXEC sp_addserver 'serverReceive';  
GO  
--Create a local login mapping for the Windows authenticated login.  
--Sales\Mary to Sales_Mary. The password should match the  
--password for the login Sales_Mary in serverReceive.  
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',  
   'Sales_Mary', '430[fj%dk';  
GO  

檢視本機或遠端伺服器屬性

您可以使用 xp_msver 擴充預存程序,來檢閱本機或遠端伺服器的伺服器屬性。 這些屬性包含 SQL Server 的版本號碼、電腦中的處理器類型和數目,以及作業系統的版本。 您可以從本機伺服器來檢視遠端伺服器的資料庫、檔案、登入與工具。 如需詳細資訊,請參閱 xp_msver (Transact-SQL)

連結的伺服器 (Database Engine)

sp_configure (Transact-SQL)

設定 remote access 伺服器組態選項

RECONFIGURE (Transact-SQL)