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

SQL Server 建立 Database Link 連結遠端伺服器資料庫的完整指南

     編輯:關於SqlServer

在企業級應用開發中,跨伺服器查詢資料是常見需求。SQL Server 提供的 Linked Server(連結伺服器)功能,讓我們能在本地實例直接存取遠端 SQL Server、MySQL、Oracle 等異構資料來源。本文將以實戰範例,詳細說明如何快速建立 DB Link 並進行跨伺服器查詢。

一、連結另一台 SQL Server 伺服器

使用系統預存程序 sp_addlinkedserver 與 sp_addlinkedsrvlogin 即可完成設定。以下範例將名為 WAS_SMS 的遠端 SQL Server 登記為連結伺服器:

-- 1. 建立連結伺服器定義
EXEC sp_addlinkedserver 
    @server = 'WAS_SMS',          -- 本地要使用的連結伺服器名稱
    @srvproduct = '',             -- 產品名稱(SQL Server 可留空)
    @provider = 'SQLOLEDB',       -- OLE DB 提供者
    @datasrc = '10.131.20.100';   -- 遠端伺服器 IP 或主機名

-- 2. 設定登入對應(使用遠端固定帳號密碼)
EXEC sp_addlinkedsrvlogin 
    'WAS_SMS', 
    'false',                      -- 不使用本地登入認證
    NULL,                         -- 本地登入(NULL 表示所有登入)
    'CustomSMS',                  -- 遠端登入帳號
    'SqlGdn@InfoxMas2008';        -- 遠端登入密碼

-- 3. 測試跨伺服器查詢(四段式命名:連結伺服器.資料庫.結構描述.資料表)
SELECT TOP 100 * 
FROM WAS_SMS.AS400_Extract.DBO.ORDUNA;

二、連結 MySQL 資料庫(透過 ODBC)

連結 MySQL 需先在 Windows「系統 DSN」建立 ODBC 資料來源(範例名為 MY_TOMATO),再以 MSDASQL 提供者建立連結:

-- 1. 建立連結伺服器指向系統 DSN
EXEC sp_addlinkedserver 
    @server = 'mysqltest', 
    @srvproduct = 'mysql', 
    @provider = 'msdasql',        -- ODBC 橋接提供者
    @datasrc = 'MY_TOMATO';       -- 系統 DSN 名稱

-- 2. 設定 MySQL 專用登入認證
EXEC sp_addlinkedsrvlogin 
    @rmtsrvname = 'mysqltest',
    @useself = 'false',
    @locallogin = '本地資料庫登入使用者',  -- 對應的本地登入
    @rmtuser = 'MySQL使用者名稱',
    @rmtpassword = 'MySQL使用者密碼';

-- 3. 使用 OPENQUERY 執行 Pass-through 查詢(效能較四段式命名佳)
SELECT * 
FROM OPENQUERY(mysqltest, 'SELECT * FROM marketing_data');

三、關鍵提醒與最佳實踐

  • 防火牆與連接埠:確保遠端伺服器 1433 (SQL Server) 或 3306 (MySQL) 通訊埠已開放。
  • 驅動程式版本:MySQL 建議使用官方最新 ODBC Driver 8.0+,避免編碼與資料型別轉換問題。
  • 安全性:生產環境請優先使用「Windows 驗證」或「含密碼雜湊的登入對應」,避免明文密碼寫在腳本中。
  • 效能優化:大量資料查詢請改用 OPENQUERY 或 EXECUTE AT,將運算下推至遠端伺服器,減少網路傳輸。

掌握 Linked Server 設定,即可打破資料孤島,實現異構資料庫的無縫整合,大幅簡化 ETL 與報表開發流程。

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