標籤:
剛好手頭項目解決了ADO串連Oracle資料庫的問題,記錄下來,防止忘記。
項目情況:用32位環境完成演算法動態庫,結果後來需要升級到64位環境,由64位的軟體來調用,則在64位設定下產生演算法動態庫,探索資料庫串連失敗。資料庫使用的是Oracle10,而串連技術使用的是比較熟悉的ADO。
1.首先懷疑的是ADO先行編譯所引用的msado15.dll版本問題,找來了64位msado15.dll,一樣重現問題。
2.懷疑是串連語句依靠的\network\admin\tnsnames.ora檔案不對,所以在程式中寫死IP和連接埠,仍然重現問題。
其間忙於其他項目,只有用32位代替跑著,將其磕置。結果意外發現了64位在兩位同事的電腦上能順利運行,但在有些電腦上又出問題。所以確定為系統內容的問題,最終定位到ODAC。
問題最後解決了,但是還是未能完全脫離配置
1.串連語句寫成這樣,避免依賴tnsnames.ora檔案
Provider=OraOLEDB.Oracle.1;Password=密碼;Persist Security Info=True;User ID=使用者名稱;\
Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521)) )(CONNECT_DATA = (SID = 資料庫)))\"
其中可以將使用者名稱、密碼、資料庫ID、IP、連接埠這些提出來寫成設定檔,方便更改。
2.安裝對應的ODAC,64位的http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html。相對來說,32位的ODAC是EXE安裝檔案,簡單粗暴,直接自動安裝好一切,所以當時沒有出問題。64位的ODAC驅動是由Oracle官方提供的XCOPY版本,安裝過程參考微軟官方http://support2.microsoft.com/kb/2831123/zh-tw。
(1)解壓XCOPY
(2)用命令列CD到(1)的目錄下
(3)命令列運行其中的install.bat檔案:install.bat all c:\oracle\ODAC_64 odac
(4)C盤出現目錄c:\oracle\ODAC_64,進行系統內容配置:path裡面增加C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin
(5)完成
最後,這樣的配置在一台機器上出現了報錯的問題,發現是由於該機器上安裝的東西過多,path環境混亂,Oracle版本指向不明,所以將C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin這個路徑放到path屬性的最前面即可。
64位程式,利用ADO串連Oracle資料庫