首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連結伺服器取代遠端伺服器:架構優勢、安全映射與實作指南

     編輯:關於SqlServer

前言

早期 SQL Server 提供「遠端伺服器」功能讓用戶透過一台 SQL Server 連接另一台執行預存程序。但受限於安全性、效能與異構支援,Microsoft 官方已明確建議改用「連結伺服器」。本文深度解析連結伺服器在架構、安全、異構存取、OLE DB 提供者配置上的優勢,並提供管理控制台與系統預存程序兩種部署方式。

一、 核心架構優勢:獨立連接層

  • 遠端伺服器模式: 用戶端 → 本地 SQL Server → 遠端 SQL Server。本地 SQL Server 充當轉發代理,佔用本地資源 (執行緒、記憶體、鎖),效能受限於本地伺服器負載。
  • 連結伺服器模式: 用戶端/本地 SQL Server → 連結伺服器元件 (OLE DB Provider) → 遠端資料源。連結伺服器邏輯獨立於 SQL Server 引擎,不佔用 SQL Server 內部工作執行緒,可直接由用戶端應用程式呼叫,效能顯著更佳。

二、 異構資料源支援能力

遠端伺服器僅支援 SQL Server 之間。連結伺服器透過 OLE DB Provider,支援:

  • 關聯式:Oracle, DB2, PostgreSQL, MySQL, Access, Excel, 文字檔...
  • 非關聯式:Active Directory, Exchange, 檔案系統...

資料遷移、跨平台報表、主從同步場景極具價值。

三、 安全性核心:登入映射

連結伺服器提供精細的 登入映射 機制:

  1. 本地登入 (Windows/帳號) → 映射至遠端特定帳密。
  2. 支援「不映射」(拒絕存取)、「映射至特定遠端登入」、「使用當前安全性內容」(信任連接/委派)。
  3. 系統預存程序 sp_addlinkedsrvlogin 管理映射關係,集中管控,避免連接字串硬編碼在應用程式/預存程序中。

實現「保安」角色:連結伺服器驗證本地身份後,才代理遠端連線,阻擋未授權存取。

四、 OLE DB 提供者參數微調

提供者選項 (Provider Options) 可控制行為:

參數功能典型值
NestedQueries允許 FROM 子句巢狀 SELECT0=禁止, 非0=允許
NonTransactedUpdates允許非交易更新 (無法 Rollback)0=允許更新, 非0=禁止
DynamicParameters支援參數化查詢1=啟用

建議: 初學者保持預設值;進階調校需充分測試,錯誤參數導致查詢失敗極難排查。

五、 部署方式雙軌制

1. 管理控制台 (GUI) - 適合初學者

物件總管 → 伺服器物件 → 連結伺服器 → 右鍵「新增連結伺服器」 → 填寫一般/安全性/伺服器選項頁籤。直觀、即時驗證。

2. 系統預存程序 (腳本化) - 適合自動化/版控

-- 建立
EXEC sp_addlinkedserver
    @server = 'LINK_ORA',
    @srvproduct = 'Oracle',
    @provider = 'OraOLEDB.Oracle',
    @datasrc = 'ORCL_TNS';

-- 登入映射
EXEC sp_addlinkedsrvlogin 'LINK_ORA', 'false', NULL, 'ora_user', 'ora_pwd';

-- 查詢元資料
SELECT * FROM sys.servers WHERE is_linked = 1;
SELECT * FROM sys.linked_logins WHERE server_id = (SELECT server_id FROM sys.servers WHERE name = 'LINK_ORA');

-- 移除
EXEC sp_dropserver 'LINK_ORA', 'droplogins';

六、 分散式查詢中的角色

連結伺服器是分散式查詢的基礎設施。查詢優化器會分析遠端資料列集請求,決定在遠端執行 (下推謂詞、聯結) 或拉回本地處理。善用 OPENQUERY 強制遠端執行複雜邏輯,減少跨網路資料傳輸。

七、 總結

連結伺服器以獨立 OLE DB 架構提供優異效能、完整異構支援、集中安全映射管理,全面超越遠端伺服器。掌握 sp_addlinkedserver/sp_addlinkedsrvlogin 腳本化部署、提供者參數調校、分散式查詢優化技巧,是跨平台資料整合的核心能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved