在64位SQL Server中建立Oracle的連結的伺服器 Link Server
有時候我們希望在一個SQL Server下訪問另一個SQL Server資料庫上的資料,或者訪問其他Oracle資料庫上的資料,要想完成這些操作,我們首要的是建立資料庫連結。
資料庫連結能夠讓本地的一個SQL Server登入使用者映射到遠端一個資料庫伺服器上,並且像操作本機資料庫一樣。
SQL Server Link Server
使用MS SQL Server 提供的Linked Server建立對其他異構資料庫伺服器的單向信任串連,實現資料轉送。
支援Distribution Transaction, 效能較好,但存在平台限制,串連僅能設定在SQL Server端,使用較透明。
使用時SQL文法與常用方法差別很小,很利於開發人員快速適應使用。
適合約時使用以SQL Server為主的多種資料庫且有資料關聯的項目,使用教透明,在開發中基本不必考慮異
構資料庫的影響,且能提供完善的事務支援。
一、Oracle資料訪問組件ODAC的安裝方法 -----安裝驅動
注意:安裝驅動的目的是讓SQLSERSSVER中資料來源有Oracle provider for OLD DB,MSSQL2008預設是內建這個驅動,以下是無需安裝的
方一:
如果用32位win2003作業系統,會有系統內建的Microsoft OLE DB Provider for Oracle驅動,因此不需要做額外的準備工作,但如果使用的是64位系統,那麼這個驅動是沒有的,並且微軟也不提供這個驅動的64位版本,因此,此時只能使用Oracle提供的Oracle Provider for OLE DB這個驅動。
安裝一個完整的Oracle11gR2程式也是一個有效方法,但這個64位版本的安裝包有2個多G,相當龐大,如果僅僅是為了建立連結的伺服器,完全沒必要裝這麼個龐然大物。其實我們只需要到Oracle官網上下載ODAC壓縮包即可。
方一:
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
我下載的是ODAC 11.2 Release 4 and Oracle Developer Tools for Visual Studio (11.2.0.3.0)
本文採取方二
方二:下載64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64,安裝包名為ODAC112040Xcopy_64bit.zip
1.解壓縮這個zip包,把裡面的檔案都解壓到一個檔案夾裡,我是解壓到D:\ODAC112040Xcopy_64bit,然後開啟cmd,進入到這個檔案夾。
這個檔案夾裡有8個子檔案夾,分別是:
instantclient_11_2:這是Oracle用戶端,所有組件的運行都依賴於這個用戶端; 是最基礎的
oledb:這是OLE DB組件
asp.net:這是ASP.NET2組件
asp.net4:這是ASP.NET4組件
odp.net4:這是.NET4組件
odp.net20:這是.NET2組件
oramts:這是Oracle的MTS服務
network:這個檔案夾不用管,它是用來存放tnsnames.ora檔案的,要安裝後才能用。
組件之間的依賴關係。:
instantclient_11_2是最基礎的
oledb依賴於instantclient_11_2
asp.net依賴於instantclient_11_2和odp.net20
asp.net4依賴於instantclient_11_2和odp.net4
odp.net4依賴於instantclient_11_2
odp.net20依賴於instantclient_11_2
oramts依賴於instantclient_11_2
2.安裝ODAC包 ,(安裝後SQL SERVSER中就會多了一個資料來源Oracle provider for OLD DB)
在cmd中運行install.bat批次檔:輸入"install.bat all D:\OracleClient ODAC"(不含雙引號)。這裡有幾個參數需要特別注意,這裡我們傳入了三個參數,但最多可以傳入四個。
第一個參數:all。all代表安裝ODAC112040Xcopy_64bit檔案夾下所有的組件和用戶端。如果你不需要這麼多組件,只用到其中一個,比如只用到了OLE DB組件,就可以像下面這樣只安裝用戶端和這一個OLE DB組件: install.bat oledb D:\OracleClient ODAC
第二個參數:D:\OracleClient。這是安裝路徑,根據自己的實際情況指定,路徑中盡量不要有空格和圓括弧。
第三個參數:ODAC。這個叫ORACLE HOME NAME,這個參數也可以自己隨便指定一個字串,不一定非得是"ODAC"。這個參數是用來寫入註冊表的。比如,上面這條語句執行後,會在註冊表的以下位置寫入: HKLM\Software\Oracle\KEY_ODAC 這"KEY_"後面的ODAC就是你在參數中傳入的那個"ODAC"
第四個參數。一般只用前三個參數就夠了,在安裝組件的時候會自動把它依賴的組件都安裝上,但如果你只想安裝指定的組件,不想裝它所依賴的組件,這時才會用到第四個參數。比如:當你安裝asp.net時,如果只用前三個參數,會自動把它所依賴的odp.net20和instantclient_11_2也安裝上,但如果你再傳入第四個參數"false",如下:install.bat asp.net D:\OracleClient ODAC false 這時就只會安裝asp.net,而不會把odp.net20和instantclient_11_2也裝上。
3.設定環境變數
ORACLE_HOME=D:\OracleClient (添加一個環境變數ORACLE_HOME,其值為你的安裝路徑,比如我這裡就是D:\OracleClient)
PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin; (在PATH環境變數中添加下面兩個路徑,用分號隔開: %ORACLE_HOME%;%ORACLE_HOME%\bin;)
二、根據需要配置tnsnames.ora檔案
前提安裝ORACLE 11 64位 client
如果要用組件訪問Oracle資料庫,那麼就要根據需要配置tnsnames.ora檔案,並存放於%ORACLE_HOME%\network\admin目錄下。 我的tnsnames.ora檔案格式如下,供參考:
NALGENE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.127)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = nalgene)
)
)
三、在64位SQL Server中建立Oracle的連結的伺服器
注意以下資料來源填寫的是tnsname.ora檔案中左上方的參數名,而不是紅色框中的名字
運行效果如下
建立一個sqlserver對Oracle的資料庫連結:
create view vvv as select * from TESTORACLE..SCOTT.SYS_USER
select * from vvv;
其中SCOTT為遠程oracle資料庫伺服器的一個使用者名稱,SYS_USER為該使用者在該伺服器上的一個表,要非常注意的是:資料庫連結(TESTORACLE)後面有兩個點(..),再往後面必須全部大寫,查詢的對象一般為表格或者視圖,不能查詢同義字。
--1.配置LinkServer語句如下(連結的伺服器為Oracle,使用oracle的oledb庫MSDAORA)
--1.1為建立連結的伺服器