SQL Server 透過 Linked Server 實現異構資料存取,底層依賴 OLE DB Provider for DB2 搭配 DB2 ODBC Driver。資料流向:
SQL Server → OLE DB Provider → ODBC Driver → DB2 Server
確保目標機器已安裝 DB2 Client,並能在 CLP 正常連線目標 DB2 資料庫。
DB2TEST)SHARE,確定ODBC 設定視窗點「測試連線」出現成功訊息,代表驅動層無誤。
企業管理器 → 安全性 → 連結伺服器 → 右鍵「新增連結伺服器」
| 頁籤 | 欄位 | 設定值 |
|---|---|---|
| 一般 | 連結伺服器名稱 | 自訂(如 LK_DB2_PROD) |
| 伺服器類型 | 其他資料來源 | |
| 提供者名稱 | IBM OLE DB Provider for DB2 SERVERS | |
| 資料來源 | 步驟 2 的 ODBC DSN 名稱(DB2TEST) | |
| 提供者字串 | User ID=db2user;Password=db2pwd 或 UID=db2user;PWD=db2pwd | |
| 安全性 | 「使用此安全性內容」 | 輸入 DB2 遠端登入帳號/密碼 |
| 伺服器選項 | 保持預設 | 或依需求調整 RPC OUT、DATA ACCESS 等 |
SELECT * FROM [LK_DB2_PROD]..[DB2_SCHEMA].[TABLE_NAME]
注意:企業管理器僅能瀏覽中繼資料,實際查詢資料必須在查詢分析器使用四段式命名。
| 錯誤現象 | 可能原因 | 解決方向 |
|---|---|---|
| 「找不到提供者」 | 未安裝 IBM OLE DB Provider | 從 DB2 Client 安裝媒體安裝 IBMDADB2 | 「登入失敗」 | 提供者字串帳號/密碼錯誤 | 核對 DB2 遠端帳號、密碼、權限 |
| 「資料來源名稱不存在」 | Linked Server 資料來源欄位拼寫錯誤 | 確認與 ODBC DSN 完全一致(區分大小寫) |
| 中文亂碼 | Codepage 不匹配 | ODBC DSN 設定 CODEPAGE、Linked Server 字串加 CCSID |
SELECT 權限。SELECT * FROM OPENQUERY(LK_DB2_PROD, 'SELECT ...') 讓篩選在 DB2 端完成,減少網路傳輸。RPC OUT、PROMOTE DTC,降低 DTC 協調開銷。LIST APPLICATIONS,確認 SQL Server 連線正常釋放。「DB2 Client → ODBC DSN → IBM OLE DB Provider → Linked Server」四層疊加,打通 SQL Server 與 DB2 異構查詢通道。掌握建置細節與四段式查詢語法,即可在 T-SQL 中無縫存取 DB2 資料,支援跨平台報表、ETL、資料同步等場景。