原本用ODBCX64先建立連線,但一直有以下的錯
[Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified
GOOGLE後,大都是說需要再安裝X64的ORACLE CLIENT,覺得好麻煩,再找了一下相關資源後,發現應該只需要在那台SQL SERVER 主機安裝ORACLE ODAC應就可以連結ORACLE了。
參考: Installing 64-bit Oracle ODAC 11.2 to Microsoft SQL Server 2008 R2 x64
記錄一下設定方法.
先去ORACLE網站下載ODAC xcopy版
原本先下載12c Release 但建好連結後,卻有"ORA-03134: Connections to this server version are no longer supported."的錯,所以就下載11.2 Release 6的版本
64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64
解壓縮後,因為我只需要安裝ORACLE OLEDB(在SQL SERVER 2008R2的Linked Servers Providers下要可看得到OraOLEDB.Oracle) ,所以在DOS下執行以下安裝指令即可,其中安裝目錄是自已訂的
install.bat oledb c:\oracle_odac true
其他安裝指令可參考解壓縮後目錄ODAC112040Xcopy_64bit下的readme.htm有安裝說明。
按照參考文章的說法,還要做以下設定
1.在系統環境變數下設定一個變數 ORACLE_HOME = C:\oracle_odac,並在Path變數下加入以下C:\oracle_odac;C:\oracle_odac\bin;
2. 打開regedit 在HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_true 下,加入FetchSize =1000 (我是建QWord 64位元)
再將tnsnames.ora copy到c:\oracle_odac\network\admin\下,tnsnames.ora內容如下
ORAC=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORACDB)
)
)
接著執行以下tsql建立Linked Server
exec sp_addlinkedserver
'ORAServer', --@server 就是linked server名稱
'Oracle', --@srvproduct 隨便寫通常會寫DB產品
'OraOLEDB.Oracle', --@provider使用哪種provider
'myOracle' --@datasrc 要連結的Database name
再建立登入oracle的帳密
exec sp_addlinkedsrvlogin 'ORAServer', 'FALSE',NULL, 'user_name', 'user_password'
然後在Linked Servers Providers下的OraOLEDB.Oracle,按右鍵點選Properties,進入後,將Allow inprocess 選項勾選起來 ,若不勾選,則執行時會有以下錯誤
Msg 7302, Level 16, State 1, Line 1
無法建立連結伺服器 "accs" 的 OLE DB 提供者 "OraOLEDB.Oracle" 的執行個體。
最後重啟動SQL SERVER,然後下一段sql 測試一下
select * from openquery(ORAServer,'select * from all_tables')
應該就可順利查詢了。
ps.如果有安裝PL/SQL Developer工具,則需使用32bit的元件才能連線
32-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows X86
建立另一個目錄進行安裝即可,例 install.bat oledb c:\oracle_odac32 true
然後在系統環境變數建立另一個ORACLE_HOME32 變數及path。
在regedit下的機碼位置為HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_true。
安裝後,開啟 PL/SQL Developer ,在Tools\Preferences\Connection下設定Oracle Home = ORACLE_HOME32及OCI library=C:\oracle_odac32\oci.dll
然後再重開PL/SQL Developer應可正常連線。