SQL Server 透過連結伺服器可實現異構資料來源的即時查詢與聯結。本文以連接 IBM DB2 為例,詳細記錄從驅動安裝、資料來源建立、連結伺服器配置到測試查詢的完整操作流程,附關鍵截圖說明。
執行安裝程式,完成後會在「開始功能表」出現 Microsoft OLE DB Provider for DB2 → 資料存取工具。



在資料存取工具中,以滑鼠右鍵點選已建立的資料來源 → 屬性 → 全部 頁籤 → 複製 連線字串 (以 Provider=DB2OLEDB;... 開頭)。

DB2SVR)
連結伺服器建立成功後,即可使用四部份名稱查詢 DB2 物件:
SELECT *
FROM [DB2SVR].[DB2].[ADMINISTRATOR].[ABC];
DB2SVR:連結伺服器名稱DB2:DB2 目錄/資料庫名稱 (視 DB2 定義而定,可能為空或具體名稱)ADMINISTRATOR:Schema/擁有者ABC:資料表/視圖名稱| 錯誤現象 | 可能原因 | 解決方向 |
|---|---|---|
| 「找不到提供者」/ 7302/7303 錯誤 | OLE DB Provider 未正確註冊 (32/64 位元不匹配) | 確認 SQL Server 位元版本,安裝對應版 Provider;註冊表檢查 HKEY_CLASSES_ROOT\DB2OLEDB |
| 連線逾時 / SQL30081N | 防火牆阻擋、DB2 監聽埠錯誤、主機名解析失敗 | Telnet 測試埠通、ping 主機名、DB2 LISTEN 設定檢查 |
| 認證失敗 / SQL1042C | 帳號/密碼錯誤、DB2 驗證模式 (SERVER/CLIENT/ENCRYPT) 不匹配 | 確認 DB2 AUTHENTICATION 參數、嘗試 DB2 命令列連線驗證 |
| 查詢中文亂碼 | 字碼頁 (CCSID) 不匹配 | 連線字串加入 Default CCSID=1208 (UTF-8) 或匹配 DB2 資料庫 CCSID |
| 分散式交易失敗 (MSDTC) | MSDTC 未啟用/網路防火牆阻擋 RPC 埠 | 元件服務啟用 MSDTC 網路存取、允許輸入/輸出、無需驗證 |
OPENQUERY 將過濾/聯結邏輯下推至 DB2 執行,減少跨網路傳輸資料量。
SELECT * FROM OPENQUERY(DB2SVR, 'SELECT * FROM ADMINISTRATOR.ABC WHERE COL1 > 100');
RUNSTATS,確保 SQL Server 查詢優化器透過連結伺服器獲取的統計資料準確。Connection Pooling=True;Max Pool Size=100; 減少頻繁連線開銷。DECIMAL/NUMERIC → SQL Server DECIMAL;TIMESTAMP → DATETIME2;BLOB/CLOB → VARBINARY(MAX)/VARCHAR(MAX),注意長度截斷風險。完成上述配置,SQL Server 即可將 DB2 視為本地資料表參與查詢、ETL、報表,打破異構資料孤島,實現跨平台資料整合。