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

SQL Server 建立 Oracle 連結伺服器完整實作步驟(圖文詳解)

     編輯:關於SqlServer

跨異質資料庫查詢是企業整合常見需求。本文以 SQL Server 2000 為例,詳細記錄從 Oracle Client 安裝、TNS 設定、ODBC DSN 建立,到連結伺服器配置與四部分命名查詢的完整流程。

前置需求

  • SQL Server 主機已安裝 Oracle Client(含 Net8/Net Configuration Assistant)
  • 網路可連通 Oracle 伺服器(TCP 1521 或其他配置埠)

步驟 1:設定 Oracle Client tnsnames.ora

路徑通常在 ORACLE_HOME\network\admin\tnsnames.ora,新增服務別名:

TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.11.90)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = blue)
      (SERVER = DEDICATED)
    )
  )

測試:命令列執行 tnsping TEST 確認解析正常。

步驟 2:建立系統 DSN (ODBC)

  1. 控制台 → 系統管理工具 → 資料來源 (ODBC) → 「系統 DSN」頁籤 → 「新增」
  2. 選擇 Microsoft ODBC for Oracle
  3. 資料來源名稱:TEST(建議與 TNS 別名一致)
  4. 伺服器名稱:填入 TNS 別名 TEST
  5. 完成

步驟 3:SQL Server Enterprise Manager 建立連結伺服器

  1. 展開「安全性」→ 右鍵「連結伺服器」→ 「新增連結伺服器」
  2. 連結伺服器名稱:ORA_LINK(自訂)
  3. 伺服器類型:選「其他資料來源」
  4. 提供者:Microsoft OLE DB Provider for Oracle
  5. 資料來源:輸入步驟 2 的 DSN 名稱 TEST
  6. 提供者字串:User ID=ora_user;Password=ora_pwd(Oracle 端帳密)
  7. 切換「安全性」頁籤 → 選「使用此安全性內容」→ 輸入相同 Oracle 帳密
  8. 「伺服器選項」保持預設 → 確定

步驟 4:驗證與查詢語法

在 Enterprise Manager 連結伺服器下展開「資料表」,即可看到 Oracle 使用者擁有的所有表格。

實際查詢需在「查詢分析器」使用四部分命名:

SELECT * FROM [ORA_LINK]..[ORA_USER].[TABLE_NAME];
  • 第一部分:連結伺服器名稱 [ORA_LINK]
  • 第二部分:留空(Oracle 無資料庫層級)
  • 第三部分:Oracle Schema/使用者名 [ORA_USER]
  • 第四部分:表格名 [TABLE_NAME]

常見問題排查

現象原因與對策
「找不到提供者」未安裝 Oracle Client 或 OLE DB Provider 未註冊 → 重裝 Client 並勾選 OLE DB 元件
「ORA-12154: TNS could not resolve」tnsnames.ora 路徑錯誤、別名拼寫錯誤、多 Oracle Home 衝突 → 確認 TNS_ADMIN 環境變數指向正確資料夾
權限不足連結伺服器安全性頁籤帳密錯誤、Oracle 端未授與 SELECT 權限
中文亂碼Oracle NLS_LANG 設定與 SQL Server 代碼頁不一致 → 統一設定為 TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950

進階:使用 OPENQUERY 下推查詢

複雜 JOIN 或大量資料建議用 OPENQUERY 在 Oracle 端完成過濾/聚合,再傳回結果:

SELECT * FROM OPENQUERY(ORA_LINK, 'SELECT col1, col2 FROM ora_user.big_table WHERE dt > SYSDATE-30');

此法可大幅降低網路傳輸量並利用 Oracle 端索引。

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