【轉載】SSIS 64位環境訪問Oracle11g

轉載博客:http://www.dotblogs.com.tw/allanyiin/archive/2010/11/21/19585.aspx

SSIS 爲了要能夠在64位的機器上面讓SSIS存取Oracle,當然需要安裝64位的Oracle Provider,但是遇到最大的問題在於SSIS在執行的時候分成兩種組件,分別是DTExec.exe(32位版)以及DTExec.exe(64位版),分別存在於Program Files(x86)以及Program Files目錄之下。當SSIS在執行時候或者是在利用導入導出數據(64位版)時都不會有問題

但是最大的問題在於SSIS在設計階段時利用的BIDS只有32位版,因此在開發時若是要測試連接,會找不到對應的32位提供程序,而發生初始化提供程序的問題(所以大家這時會質疑我明明已經裝了,爲什麼他說找不到)

因此若是要解決方式就必須同時安裝32位以及64位的Oracle Client。
以下說明,在64位Windows環境下安裝Oracle Client & OLEDB組件的步驟(我的操作系統是Windows Server 2008 R2):
1、需要先準備32位以及64位兩種版本的Oracle Client,建議使用11.1.0.7.0版,因爲如果是使用10.2.0.1版本需要再安裝兩個Oracle補丁(#4547817 & #5383042) ,如果沒有安裝以上補丁會遇到ORA-12154: TNS:無法解析指定的連接ID的問題。
2、如果系統上有舊的Oracle clients,請複製備份tnsnames.ora以及sqlnet.ora檔案。(位於%ORACLE_HOME%/network/ADMIN/目錄下)
3、安裝以及刪除舊的Oracle client以及安裝目錄(需要重啓計算機,才能夠刪除目錄)。
4、在64位SQL Server的機器上面執行Oracle 11g Client的setup.exe,必須先安裝32 位版本。
5、選擇[管理員]模式全部安裝(專業級人士可以自行選擇模式)。

6、選擇相應的語言下一步,然後根據需要修改路徑

在此我將32位的路徑文件夾改爲client_1,
將64位的路徑文件夾改爲client_2.
7、安裝完後重新將TNSNAMES.ORA替換新安裝的client的%ORACLE_HOME%/network/admin文件夾中,32位和64位都要替換,否則在使用PLSQL或者BIDS創建Oracle數據源時會提示TNS錯誤。
P.S.如果在安裝完2個client(32位和64位)之後使用自帶的Net Manager配置服務命名時其配置的的都是64位的,即配置的ORA都存在64位的client目錄的admin文件夾中,所以始終無法使用BIDS連接Oracle(除非使用IP\服務名方式)
8、重複以上步驟再安裝一次64位Client

P.S.安裝時會出現[OracleMTSRecoveryService 已存在]或者一些PATH路徑值過多等的錯誤信息,請點選[忽略]繼續安裝即可,當然也可以找尋相應的解決方案解決更好,只是這些問題都不是非常嚴重的。

9、修改以下的註冊表設定,然後重啓電腦
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDTC\MTxOCI
將值改爲
OracleOciLib = oci.dll
OracleSqlLib = orasql11.dll (舊的值是: SQLLib80 .dll)
OracleXaLib = oraclient11.dll (舊的值是: xa80.dll)

此時就可以正常地在64位環境中的BIDS讀取Oracle數據了。各位可以利用32位版以及64位版的導入導出數據進行測試。
但是要記得的是,使用BIDS時,它是根據32位的數據提供程序,因此在開發以及排錯時還是利用32位的Oracle OLEDB來讀取數據。但是當SSIS封裝佈署到64位SQL Server執行時,他就會改使用64位的Oracle OLEDB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章