天天看點

将 SQL Server 連結到 Oracle 資料庫實戰

作者:雪竹頻道

概述

在某些情況下,我們希望從外部資料庫中擷取資料,而無需在應用程式中進行額外編碼,隻需編寫一個 T-SQL 查詢即可為我們完成所有工作。這就是微軟提供的“連結伺服器”功能的原因。

但預設情況下,連結伺服器無法連接配接到 Oracle 資料庫。本文中我們将展示如何安裝必需的庫和工具,然後我們将配置 Oracle 資料庫(稱為 Oracle Net)的網絡層,以最終能夠建立連結伺服器并查詢目标資料庫執行個體。

Oracle 資料庫用戶端的安裝

首先,停止 SQL Server 執行個體。如果執行個體正在運作,安裝不會失敗,但是在第一次調用 Linked Server Provider 時,執行個體會挂起并且不會響應!本文中我想連接配接一個 Oracle Database 11g 執行個體。是以我将安裝一個 Oracle Database 11g 用戶端,但您也可以嘗試安裝最新版本。源檔案可以在Oracle 的網站上下載下傳。它采用 ZIP 檔案的形式。下載下傳解壓縮并打開解壓縮的檔案夾。

将 SQL Server 連結到 Oracle 資料庫實戰

完成後,隻需點選 « setup.exe »

這将打開以下對話框。選擇«自定義»

将 SQL Server 連結到 Oracle 資料庫實戰

選擇您使用的适當語言。

将 SQL Server 連結到 Oracle 資料庫實戰

然後選擇安裝的目标檔案夾。我個人更喜歡将其與作業系統分區分開,并且我遵循 Oracle 中的正常路徑。

将 SQL Server 連結到 Oracle 資料庫實戰

現在讓我們選擇适當的元件。

[

将 SQL Server 連結到 Oracle 資料庫實戰
  • 資料庫實用程式、SQL*Plus 和 Oracle 調用接口是在出于任何原因添加外部開發的情況下選擇的。它們可能沒有用。
  • Oracle Net是 Oracle 資料庫的網絡層。這将允許我們在名為 tnsnames.ora 的檔案中配置“路由”
  • 選擇了Oracle ODBC Driver、Oracle Provider for OLE DB 和 Oracle Provider for .NET,以允許 SQL Server 通過不同的方式聯系 Oracle 資料庫。

通過單擊“下一步”按鈕,您将看到以下界面:

[

将 SQL Server 連結到 Oracle 資料庫實戰

單擊“結束”并開始安裝……

将 SQL Server 連結到 Oracle 資料庫實戰

我們完成了。

将 SQL Server 連結到 Oracle 資料庫實戰

讓我們連接配接到 SQL Server 執行個體并檢查它是否看到新安裝的提供程式:

将 SQL Server 連結到 Oracle 資料庫實戰

配置 Oracle Net(添加對目标 Oracle 執行個體的引用)

  • 配置檔案的位置

由于我們在 I:\app\oracle 中安裝了 Oracle 軟體,是以網絡配置檔案将位于 I:\app\oracle\product\11.2.0\client_1\network\admin 中。

  • 編輯 Oracle Net (sqlnet.ora) 的配置

我們将使用它來首先确定名稱解析方法的優先級,定義預設域和時間間隔以驗證連接配接是否仍處于活動狀态。

為此,請在 sqlnet.ora 檔案中添加以下行。

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)NAMES.DEFAULT_DOMAIN = LOCALDOMSQLNET.EXPIRE_TIME = 30            
重要的提示

定義 NAMES.DEFAULT_DOMAIN 時,您将始終必須使用完全限定的 TNS 名稱。如果您對使用不感興趣,可以将其删除

  • 編輯名稱解析中使用的本地清單 (tnsnames.ora)

在配置中另一個非常重要的檔案是 tnsnames.ora 檔案。此 tnsnames.ora 檔案是一個配置檔案,其中包含映射到本地命名方法的連接配接描述符的網絡服務名稱,或映射到偵聽器協定位址的網絡服務名稱。

以下是用于建立連結伺服器的内容示例。

TESTSRV.LOCALDOM = (DESCRIPTION =  (ADDRESS_LIST =   (ADDRESS = (PROTOCOL = TCP)(HOST = TestSrv.st.chulg)(PORT = 1521))  )  (CONNECT_DATA =   (SERVER = DEDICATED)   (SERVICE_NAME = TESTSRV.LOCALDOM)  ) )            
  • 測試命名解析

打開 cmd.exe 并運作以下指令:

tnsping TESTSRV            

您将收到類似于以下内容的文本:

将 SQL Server 連結到 Oracle 資料庫實戰

建立到 Oracle 資料庫執行個體的連結伺服器

  • 使用 SSMS

建立連結伺服器最友善的方法肯定是通過 SQL Server Management Studio。為此,請連接配接到 SQL Server 執行個體并找到 « Server Objects »,單擊一下,您将找到 « Linked Servers »。如果您右鍵單擊它,您将能夠建立一個新的連結伺服器。

将 SQL Server 連結到 Oracle 資料庫實戰

如下提供連接配接資訊。作為資料源,您将使用 tnsnames.ora 檔案中使用的名稱(帶或不帶域名)。

将 SQL Server 連結到 Oracle 資料庫實戰

在配置的安全部分,根據您的環境配置,您将選擇适當的方法用于遠端身份驗證。

将 SQL Server 連結到 Oracle 資料庫實戰

您還可以檢視連結伺服器設定以根據您的環境進行調整。

單擊“确定”後,将建立連結伺服器并将其添加到“連結伺服器”清單中,如下所示。

将 SQL Server 連結到 Oracle 資料庫實戰

我們可以測試連結伺服器。為此,請右鍵單擊它并選擇«測試連接配接»。

将 SQL Server 連結到 Oracle 資料庫實戰

如果一切都配置好,您将看到以下對話框:

将 SQL Server 連結到 Oracle 資料庫實戰

您還可以通過檢視樹視圖查詢的表和視圖:

将 SQL Server 連結到 Oracle 資料庫實戰

最後,您可以運作以下查詢:

SELECT * FROM OPENQUERY([DBLNK_TEST] , 'select sysdate from dual') ;           

小結

本文首先介紹了ORACLE用戶端的安裝過程,然後介紹了配置 Oracle 資料庫(稱為 Oracle Net)的網絡層的方法,最後介紹了連結伺服器的測試及查詢目标資料庫執行個體的方法。