轉載博客:http://www.dotblogs.com.tw/allanyiin/archive/2010/11/21/19585.aspxsql
SSIS 爲了要可以在64位的機器上面讓SSIS存取Oracle,固然須要安裝64位的Oracle Provider,可是遇到最大的問題在於SSIS在執行的時候分紅兩種組件,分別是DTExec.exe(32位版)以及DTExec.exe(64位版),分別存在於Program Files(x86)以及Program Files目錄之下。當SSIS在執行時候或者是在利用導入導出數據(64位版)時都不會有問題yii
可是最大的問題在於SSIS在設計階段時利用的BIDS只有32位版,所以在開發時如果要測試鏈接,會找不到對應的32位提供程序,而發生初始化提供程序的問題(因此你們這時會質疑我明明已經裝了,爲何他說找不到)ide
所以如果要解決方式就必須同時安裝32位以及64位的Oracle Client。
如下說明,在64位Windows環境下安裝Oracle Client & OLEDB組件的步驟(個人操做系統是Windows Server 2008 R2):
一、須要先準備32位以及64位兩種版本的Oracle Client,建議使用11.1.0.7.0版,由於若是是使用10.2.0.1版本須要再安裝兩個Oracle補丁(#4547817 & #5383042) ,若是沒有安裝以上補丁會遇到ORA-12154: TNS:沒法解析指定的鏈接ID的問題。
二、若是系統上有舊的Oracle clients,請複製備份tnsnames.ora以及sqlnet.ora檔案。(位於%ORACLE_HOME%/network/ADMIN/目錄下)
三、安裝以及刪除舊的Oracle client以及安裝目錄(須要重啓計算機,纔可以刪除目錄)。
四、在64位SQL Server的機器上面執行Oracle 11g Client的setup.exe,必須先安裝32 位版本。
五、選擇[管理員]模式所有安裝(專業級人士能夠自行選擇模式)。測試
六、選擇相應的語言下一步,而後根據須要修改路徑spa
在此我將32位的路徑文件夾改成client_1,
將64位的路徑文件夾改成client_2.
七、安裝完後從新將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\服務名方式)
八、重複以上步驟再安裝一次64位Client操作系統
P.S.安裝時會出現[OracleMTSRecoveryService 已存在]或者一些PATH路徑值過多等的錯誤信息,請點選[忽略]繼續安裝便可,固然也能夠找尋相應的解決方案解決更好,只是這些問題都不是很是嚴重的。設計
九、修改如下的註冊表設定,而後重啓電腦
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)3d
此時就能夠正常地在64位環境中的BIDS讀取Oracle數據了。各位能夠利用32位版以及64位版的導入導出數據進行測試。
可是要記得的是,使用BIDS時,它是根據32位的數據提供程序,所以在開發以及排錯時仍是利用32位的Oracle OLEDB來讀取數據。可是當SSIS封裝佈署到64位SQL Server執行時,他就會改使用64位的Oracle OLEDBblog