開啟 IIS 中的 32 位元程式支援 ADODB.Connection

作業系統 x64 IIS7, IIS7.5 預設值沒有支援 MDAC OLEDB, ADODB.Connection 找不到工作處理程序。

出現錯誤訊息 ADODB.Connection 錯誤 800a0e7a 找不到提供者。它可能未被正確安裝。因為預設下沒有啟動執行 32bit 程式,而 Microsoft.Jet.OLEDB.4.032bit 的程式所以需要啟用相關選項。所以在 x64 位元的 IIS7 中使用 32bit, ASP + Access 的網站,需要選擇進階設定啟用 32 位元應用程式設定為 True

啟用 32 位應用程序(對應的程式池)、DefaultAppPool 應用程式集區的「進階設定」。

DefaultAppPool 按下 [進階設定]、將啟用 32 位元應用程式設置為 True


虛擬目錄設定

寫入權限:IIS 暫存目錄,設定 IIS_IUSRS 群組有寫入權限。ACCESS 資料夾(資料庫目錄)設定 IUSRS 帳戶有寫入權限。

在工作管理員中可以看到到不同工作處理程序在執行,其中 w3wp.exe64 位元的工作處理程序,而另外 w3wp.exe *32 則是 32 位元的工作處理程序。


適用於 Windows XP ProIIS 版本 5.1 適用於 Windows Server 2003IIS 版本 6.0 適用於 Windows VistaWindows Server 2008IIS 版本 7.0 適用於 Windows 7Windows Server 2008 R2IIS 7.5 版 適用於 Windows 8Windows Server 2012IIS 版本 8.0 適用於 Windows 8.1Windows Server 2012 R2IIS 版本 8.5 IIS 版本 10 適用於 Windows 2016Windows 10


Connection String

連接 Access 資料庫 (accdb) 的連接字串,出現的錯誤訊息 ADODB.Command 錯誤 800a0e7a 找不到提供者。它可能未被正確安裝。如果使用 Access 2007、20102013Access 資料庫,連線字串需要更改。但如果使用在一般租賃虛擬主機例如 Windows 2003 主機,得考量可能無法自行順利安裝驅動程式。

Access 2003 連接字串(實體路徑)

"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("Access.mdb")

Access 2007/2010/2013 連接字串(實體路徑)

"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " & Server.MapPath("Access.accdb")

Time Limits During Shutdown

當應用程式集區 Application Pool 的時間超過設定的屬性關閉時、應用程式集區超過時間限制 ShutdownTimeLimit 設定為太低的數值(預設值為 90 秒 Seconds),可能會引發意外的執行階段錯誤。超出時間限制時,會強行關閉並回收作業進程。

ADODB.Connection error '800a0e7a' Provider cannot be found.
其他可能在 Window Administrative Tools 系統管理工具,運行 ODBC 資料來源(32 位元的工作處理程序)。在 Drivers 驅動程序選項,並且檢查是否有 Microsoft Excel 驅動程序 *.xls*.xlsx 等文件名為 ACEODBC.DLL 如果缺少此功能,將需要安裝 Microsoft Access Database Engine 2016 Redistributable。