x64下odbc建立問題

今天在處理一個 odbc 建立在 x64 (64bit) server 2003 上的狀況, 狀況十分奇妙, 一般我們在設定 odbc 時, 是直接使用 [系統管理工具] 裡的 odbc 來進行設置, 當我設置好了之後, 有趣的事發生了, 居然透過 odbc 連接 db 的程式有個這樣的 exception:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

如此一來設置好的 odbc 就形同虛設, 查了半天也查不出原因, 後來在 google 上找到一篇 citrix 的 kb (link) 試了一下, 居然就好了, 可以找得到了, 仔細檢查一下原因, 整理如下:

在 x64 內透過 ui 建立的 odbc 是 64bit 的 odbc, 而原來執行的程式若是 32bit 的話, 是看不到這組 odbc 的, 也就是說 odbc 也是有區分 64bit / 32bit 的. 如何判斷原來 ui 上的 odbc 是 64bit 的呢, 我們看一下畫面截圖:

這是透過 ui 設置的 odbc , 也就是從 [系統管理工具] 叫出來的 odbc, 雖然也叫 odbcad32.exe 但是是 64 bit 的 exe 檔, 而在新增的時候, 也只有 SQL Native Client 及 SQL Server 兩組 driver 可供選擇, 再看透過 %SystemRoot%\SysWow64\odbcad32.exe 調用出來的 odbc 畫面:

可以看得到就是以 32bit 執行的 odbc 設置囉, 後面可供選擇的 driver for odbc 也就和原來熟悉的一樣囉, 這個狀況在執行應用程式為 32bit 而在 64bit os 上時, 要特別注意, 否則會很容易花時間在這裡. 供大家參考!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *