概述
在某些情況下,我們希望從外部數據庫中獲取數據,而無需在應用程序中進行額外編碼,只需編寫一個 T-SQL 查詢即可為我們完成所有工作。這就是微軟提供的“鏈接服務器”功能的原因。
但默認情況下,鏈接服務器無法連接到 Oracle 數據庫。本文中我們將展示如何安裝必需的庫和工具,然后我們將配置 Oracle 數據庫(稱為 Oracle.NET)的網絡層,以最終能夠創建鏈接服務器并查詢目標數據庫實例。
Oracle 數據庫客戶端的安裝
首先,停止 SQL Server 實例。如果實例正在運行,安裝不會失敗,但是在第一次調用 Linked Server Provider 時,實例會掛起并且不會響應!本文中我想連接一個 Oracle Database 11g 實例。所以我將安裝一個 Oracle Database 11g 客戶端,但您也可以嘗試安裝最新版本。源文件可以在Oracle 的網站上下載。它采用 ZIP 文件的形式。下載解壓縮并打開解壓縮的文件夾。
完成后,只需點擊 « setup.exe »
這將打開以下對話框。選擇«自定義»
選擇您使用的適當語言。
然后選擇安裝的目標文件夾。我個人更喜歡將其與操作系統分區分開,并且我遵循 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 Net(添加對目標 Oracle 實例的引用)
- 配置文件的位置
由于我們在 I:Apporacle 中安裝了 Oracle 軟件,因此網絡配置文件將位于 I:apporacleproduct11.2.0client_1networkadmin 中。
- 編輯 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
您將收到類似于以下內容的文本:
創建到 Oracle 數據庫實例的鏈接服務器
- 使用 SSMS
創建鏈接服務器最方便的方法肯定是通過 SQL Server Management Studio。為此,請連接到 SQL Server 實例并找到 « Server Objects »,單擊一下,您將找到 « Linked Servers »。如果您右鍵單擊它,您將能夠創建一個新的鏈接服務器。
如下提供連接信息。作為數據源,您將使用 tnsnames.ora 文件中使用的名稱(帶或不帶域名)。
在配置的安全部分,根據您的環境配置,您將選擇適當的方法用于遠程身份驗證。
您還可以查看鏈接服務器設置以根據您的環境進行調整。
單擊“確定”后,將創建鏈接服務器并將其添加到“鏈接服務器”列表中,如下所示。
我們可以測試鏈接服務器。為此,請右鍵單擊它并選擇«測試連接»。
如果一切都配置好,您將看到以下對話框:
您還可以通過查看樹視圖查詢的表和視圖:
最后,您可以運行以下查詢:
SELECT * FROM OPENQUERY([DBLNK_TEST] , 'select sysdate from dual') ;
小結
本文首先介紹了ORACLE客戶端的安裝過程,然后介紹了配置 Oracle 數據庫(稱為 Oracle Net)的網絡層的方法,最后介紹了鏈接服務器的測試及查詢目標數據庫實例的方法。