從 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 挑一個存在。
解決方式有兩個,第一個是下載 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") & ";"