標籤:
當我們同時使用SQL Server和Oracle來儲存資料時,經常會用到跨庫查詢。為了方便使用跨庫查詢,一個最好的辦法就是通過建立連結的伺服器來實現。既可以在SQL Server中建立Oracle的連結的伺服器,也可以在Oracle中建立SQL Server的連結的伺服器。本文主要講述如何在SQL Server中建立Oracle的連結的伺服器,可以通過圖形介面和命令兩種方式來建立。
工具/原料
Microsoft Windows Server 2003 R2 Enterprise x64 Edition Service Pack2
Microsoft SQL Server 2005 Standard Edition x64
Oracle Provider for OLE DB
0. 前期準備工作——安裝驅動
如果用32位win2003作業系統,會有系統內建的Microsoft OLE DB Provider for Oracle驅動,因此不需要做額外的準備工作,但如果使用的是64位系統,那麼這個驅動是沒有的,並且微軟也不提供這個驅動的64位版本,因此,此時只能使用Oracle提供的Oracle Provider for OLE DB這個驅動。
那麼如何安裝這個驅動呢?安裝一個完整的Oracle11gR2程式也是一個有效方法,但這個64位版本的安裝包有2個多G,相當龐大,如果僅僅是為了建立連結的伺服器,完全沒必要裝這麼個龐然大物。其實我們只需要到Oracle官網上下載ODAC壓縮包即可。
至於如何安裝ODAC,不是本文的重點,大家可以百度搜尋我的另一篇文章——《Oracle資料訪問組件ODAC的安裝方法》。
END
1. 通過圖形介面建立Oracle的連結的伺服器
- 1
開啟Microsoft SQL Server Management Studio並以sa身份登入,在左側的“物件總管”視窗中展開“伺服器對象”節點,在其下的“連結的伺服器”節點上右鍵選擇“建立連結的伺服器...”,
- 2
在彈出的“建立連結的伺服器”對話方塊中,按照圖示填寫,具體填寫項目說明如下:
* 連結的伺服器:這是連結的伺服器的別名,名字可以由你自己隨意決定
* 伺服器類型選擇“其他資料來源”
* 提供者:一定要選擇“Oracle Provider for OLE DB”。如果是32位系統,還可以選擇“Microsoft OLE DB Provider for Oracle”,但64位系統就只能選擇前者
* 產品名稱:一定是“Oracle”,這是固定寫法,只要是連結Oracle資料庫,都得這麼寫
* 資料來源:是你要連結的Oracle資料庫的庫名。在我的Oracle資料庫軟體裡,建立了一個名為ora的資料庫,我想連結到這個名為ora的資料庫,所以我這裡的“資料來源”填的就是“ora”,大家可以根據自己的實際情況來填寫。
填好以後不要急著去點擊“確定”按鈕。
- 3
再點擊左側“選項頁”裡的“安全性”,右邊選擇最下面的“使用此安全上下文建立串連”,然後在下面輸入串連到ora(根據自己的實際情況來更改)資料庫的使用者名稱和密碼。再點擊“確認”按鈕,至此,一個明文ORA_TEST的連結的伺服器就建好了。
END
2. 通過命令來建立Oracle的連結的伺服器
把下面兩條命令語句補全,然後在SQL Server中執行即可建立成功:
EXEC master.dbo.sp_addlinkedserver @server = N‘別名‘, @srvproduct=N‘庫名‘,@provider=N‘MSDAORA‘, @datasrc=N‘TNS名‘
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N‘別名‘, @locallogin = NULL ,@useself = N‘False‘, @rmtuser = N‘模式名‘, @rmtpassword = N‘密碼‘
END
3. 測試查詢Oracle資料庫
4. 可能遇到的問題
注意事項
本文的成功是建立在Oracle資料庫驅動的成功安裝和tnsnames.ora檔案的正確配置的基礎之上的,對這一點如果有疑惑,大家可以百度搜尋我的另一篇文章——《Oracle資料訪問組件ODAC的安裝方法》。
在測試查詢Oracle資料庫時,有可能會遇到無法建立“OraOLEDB.Oracle”的執行個體的錯誤。這個問題可以在百度經驗裡搜尋我的另一篇文章——《無法建立“OraOLEDB.Oracle”的執行個體的解決辦法》。
在64位SQL Server中建立Oracle的連結的伺服器