Microsoft Access (.mdb) ODBC driver issue in 64-bit windows

從 windows 7 or windows 2008 開始,就開始有 64 bit 版本,然後就可能遇到 odbc driver 的問題,特別是在執行舊的 asp 程式,在連結 access 資料庫的時候會遇到類似這樣的訊息

Microsoft OLE DB Provider for ODBC Drivers 錯誤 ‘80004005’
[Microsoft][ODBC 驅動程式管理員] 找不到資料來源名稱且未指定預設的驅動程式

原因是 windows 裏頭的 odbc driver 有分 32 bit 與 64 bit 兩種,但是在 64 bit 的 windows 裡面都只有預設安裝了 32 bit 的 odbc driver,然後更糟糕的是同一名稱的 odbc driver 只能 32 bit 與 64 bit 挑一個存在。

odbc1

 

odbc2

解決方式有兩個,第一個是下載 64 bit driver (https://www.microsoft.com/zh-tw/download/details.aspx?id=13255),把 32 bit 的移除掉後安裝 64 bit 的上去,而且還要把 connection string 改成像下面這樣子

str_conn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("/db/ms_access.mdb") & ";Persist Security Info=False;"

str_conn="Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" & Server.MapPath("/db/ms_access.mdb") & ";"

但比較簡單的方式是在 iis 內把 32 bit application support 打開,這方法省事多了 🙂
odbc3
odbc4