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

SQL Server 連結伺服器實作:存取 Oracle 資料庫完整步驟

     編輯:關於SqlServer

架構概覽

SQL Server 2000 → OLE DB Provider for Oracle → Oracle Client (OCI) → Oracle Database
                ↑
         連結伺服器定義

核心元件:Microsoft OLE DB Provider for Oracle(需 Oracle Client 端軟體支援)。

前置需求

  1. SQL Server 主機安裝 Oracle Client(含 Net8/Net Configuration Assistant)
  2. SQL Server 2000 服務執行帳戶具備存取 Oracle Client 檔案權限
  3. 網路連通性:SQL Server 主機可解析並連線 Oracle Listener 埠(預設 1521)

逐步配置指南

步驟 1:配置 Oracle Client 端 tnsnames.ora

路徑通常在 ORACLE_HOME\network\admin\tnsnames.ora

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

驗證: 使用 tnsping TEST_DB 確認連線正常。

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

  1. 控制台 → 管理工具 → 資料來源 (ODBC) → 「系統 DSN」頁籤
  2. 「新增」→ 選擇 Microsoft ODBC for Oracle
  3. 資料來源名稱:TEST_DB(建議與 TNS 別名一致)
  4. 伺服器名稱:TEST_DB(必填,對應 tnsnames.ora 別名)
  5. 完成並「測試連線」

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

企業管理器 → 安全性 → 連結伺服器 → 右鍵「新增連結伺服器」

頁籤設定項目值/說明
一般連結伺服器名稱LINK_ORA_TEST(自訂)
伺服器類型其他資料來源
提供者名稱Microsoft OLE DB Provider for Oracle
資料來源TEST_DB(步驟2的 DSN 名稱)
提供者字串User ID=ora_user;Password=ora_pass 或 UID=ora_user;PWD=ora_pass
安全性對應方式「使用此安全性內容建立」→ 輸入 Oracle 遠端登入帳密
遠端登入/密碼Oracle 實際帳號密碼
伺服器選項預設值通常即可視需求調整 RPC、查詢逾時等

驗證與查詢測試

  1. 企業管理器 → 連結伺服器 → LINK_ORA_TEST → 「資料表」:應顯示 Oracle 使用者擁有的資料表清單
  2. 查詢分析器執行四部分命名查詢:
SELECT * FROM [LINK_ORA_TEST]..[ORA_SCHEMA].[TABLE_NAME];

注意: 企業管理器檢視資料表僅顯示中繼資料,實際查詢資料需在查詢分析器使用 T-SQL。

常見問題排查

現象可能原因解決方向
「找不到提供者」OLE DB Provider for Oracle 未安裝/註冊重新安裝 MDAC 2.8+ 或 Oracle Client
ORA-12154 / ORA-12541TNS 解析失敗 / Listener 未啟動檢查 tnsnames.ora、tnsping、防火牆、Listener 狀態
「登入失敗」提供者字串/安全性頁籤帳密錯誤確認 Oracle 帳號、密碼、大小寫、權限
中文亂碼字元集不匹配 (NLS_LANG)設定登錄 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG 為 TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950

進階應用:分散式交易 (MSDTC)

  • 啟用 MSDTC 服務(兩端主機)
  • 連結伺服器屬性 → 伺服器選項 → 啟用分散式交易 = True
  • 使用 BEGIN DISTRIBUTED TRANSACTION 進行跨資料庫原子性操作

連結伺服器打破資料孤島,實現異構資料庫即時整合,是企業資料架構的關鍵拼圖。

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