一般我們使用C#開發(fā)時,往往選擇sql server數(shù)據(jù)庫與之配合使用,因為使用起來最方便。
但如果我們需要和第三方廠商的軟件進(jìn)行數(shù)據(jù)交互時,就有可能碰到對方使用Oracle數(shù)據(jù)庫,并且在某些特定情況下還只能把數(shù)據(jù)交互的接口放到Oracle上,這時候我們就需要訪問Oracle數(shù)據(jù)庫了。
針對這種情況,我們有兩種訪問方案:
直接在軟件中增加對Oracle數(shù)據(jù)庫的讀寫操作
在SQL Server數(shù)據(jù)庫中建立鏈接服務(wù)器,并通過同義詞把接口表當(dāng)做本地表來訪問
由于訪問Oracle時必須安裝Oracle客戶端,對于方案1來說,不僅需要針對Oracle開發(fā)對應(yīng)的訪問代碼,還需要在每臺安裝軟件的電腦上裝上Oracle客戶端,這對軟件的部署帶來了很大的壓力(B/S架構(gòu)除外);而方案2則僅僅需要在SQL Server所在的電腦上安裝Oracle客戶端即可。
而對于訪問Oracle數(shù)據(jù)庫的性能和靈活性來說,方案1既可以較快的速度訪問,也能使用事務(wù)、內(nèi)置函數(shù)等一系列Oracle所擁有的功能;而方案2的訪問速度很慢,也不能使用事務(wù)。
作為數(shù)據(jù)交互接口,我們估計其訪問的數(shù)據(jù)量很小,對性能的要求也不高,所用的操作也就普通的增刪改查,不會用到Oracle特有的東西。綜合上面的對比分析,再考慮效率,覺得方案2比較適合。
下面以方案2為例說明一下配置的過程:
1、安裝Oracle客戶端
先到Oracle的官網(wǎng)上下載適用于Windows的Oracle Data Access Components(ODAC),這里使用ODAC112030Xcopy_x64.zip(如果系統(tǒng)不是64位的請選擇32位的版本,如ODAC112030Xcopy_32bit.zip)。
解壓并在命令行界面進(jìn)入解壓文件夾,運行“install.bat oledb c:\oracle odac”安裝(我們只需要oledb的驅(qū)動,并把對應(yīng)的文件安裝到C盤oracle目錄下。注意其中的空格)。
在環(huán)境變量中為Path添加“C:\oracle;C:\oracle\bin;”到開頭。
2、在SQL Server添加鏈接服務(wù)器
在SQL Server Management Studio中連接到數(shù)據(jù)庫,并在其下的“服務(wù)器對象”-“鏈接服務(wù)器”,右鍵選擇“新建鏈接服務(wù)器”。
在常規(guī)中填入鏈接服務(wù)器名稱:SWAPDB、訪問接口:Oracle Provider for OLE DB、產(chǎn)品名稱:oracle、數(shù)據(jù)源:(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ORACLEDB)))
其中鏈接服務(wù)器名稱在建立同義詞的時候用到,產(chǎn)品名稱可以隨便填,數(shù)據(jù)源中的HOST和SERVICE_NAME改為自己所使用Oracle接口的對應(yīng)地址與數(shù)據(jù)庫名稱。
在安全性中選擇“使用此安全上下文建立連接”,填入Oracle數(shù)據(jù)庫所用的登陸賬號/密碼,點擊“確定”建立鏈接。
在“服務(wù)器對象”-“鏈接服務(wù)器”-“訪問接口”-“OraOLEDB.Oracle”,右鍵選擇“屬性”。
啟用“允許進(jìn)程內(nèi)”的接口選項。
建立鏈接服務(wù)器后可以通過“服務(wù)器對象”-“鏈接服務(wù)器”-“SWAPDB”,右鍵“測試連接”查看是否成功。
3、在數(shù)據(jù)庫中創(chuàng)建同義詞
在對應(yīng)數(shù)據(jù)庫的查詢窗口中執(zhí)行“CREATE SYNONYM [dbo].[T_User] FOR [SWAPDB]..[ORAUSER].[T_User]”,這里只能用SQL語句建立同義詞,使用圖形界面將出錯,其中T_User是表名稱,SWAPDB是剛才創(chuàng)建的鏈接服務(wù)器名稱,ORAUSER是Oracle數(shù)據(jù)庫的用戶。
配置完成后,我們就可以在SQL Server中直接使用“select * from T_User”訪問遠(yuǎn)程Oracle的接口表了