2010年9月15日 星期三

[aspnet]使用access 2007 x86, x64有不同

發生在跟同事整合web service遇到的問題。

嚴格說起來,就是在 OLEDB 底下,使用 Microsoft.ACE.OLEDB.12.0 這個 driver 存取 access file。

在他的電腦上都好好的,到了整合的時候卻出來

"The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine"

當下決定,把 mdb 改成舊格式,driver 改成 Jet。

從此不想碰這種問題了。

可是,後來到了客戶那裡安裝程式,他的環境是 windows 2008 R2。居然會出現:

"The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine"

這簡直是要我的命嘛!

就算裝了AccessDatabaseEngine.exe 也沒用,事情沒有這麼單純。

要感謝 google 幫忙,一下子就找到原因。那就是AccessDatabaseEngine.exe 現在只有 32bit 的版本。我們的OS都是32bit的,所以到了整合的時候才發生這個問題。

http://ybbest.wordpress.com/2009/07/22/the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine/

改編譯方法之外變成x86,還是沒有用。還要更改 iis 的進階設定,讓 iis 能夠執行 32bit 程式才行,否則還是白談。

謝謝大家

2010/11/3 更新

沒有留言:

張貼留言