開啟 IIS 中的 32 位元程式支援 ADODB.Connection
Windows 作業系統 IIS (Internet Information Services) 預設值沒有支援 MDAC OLEDB, ADODB.Connection 找不到工作處理程序。出現錯誤訊息 ADODB.Connection 錯誤 800a0e7a 找不到提供者。它可能未被正確安裝。因為預設下沒有啟動執行 32bit 程式,而 Microsoft.Jet.OLEDB.4.0 是 32bit 的程式所以需要啟用相關選項。所以在 x64 位元的 IIS 中使用 32bit, ASP + Access 的網站,需要選擇進階設定啟用 32 位元應用程式設定為 True
啟用 32 位應用程序(對應的程式池)、DefaultAppPool 應用程式集區的「進階設定」。
於 DefaultAppPool 按下 [進階設定]、將啟用 32 位元應用程式設置為 True
虛擬目錄設定
寫入權限:IIS 暫存目錄,設定 IIS_IUSRS 群組有寫入權限。ACCESS 資料夾(資料庫目錄)設定 IUSRS 帳戶有寫入權限。
在工作管理員中可以看到到不同工作處理程序在執行,其中 w3wp.exe 是 64 位元的工作處理程序,而另外 w3wp.exe *32 則是 32 位元的工作處理程序。
適用於 Windows XP Pro 的 IIS 版本 5.1 適用於 Windows Server 2003 的 IIS 版本 6.0 適用於 Windows Vista 和 Windows Server 2008 的 IIS 版本 7.0 適用於 Windows 7 和 Windows Server 2008 R2 的 IIS 7.5 版 適用於 Windows 8 和 Windows Server 2012 的 IIS 版本 8.0 適用於 Windows 8.1 和 Windows Server 2012 R2 的 IIS 版本 8.5 IIS 版本 10 適用於 Windows 2016 和 Windows 10
Connection String
連接 Access 資料庫 (accdb) 的連接字串,出現的錯誤訊息 ADODB.Command 錯誤 800a0e7a 找不到提供者。它可能未被正確安裝。如果使用 Access 2007、2010 或 2013 的 Access 資料庫,連線字串需要更改。但如果使用在一般租賃虛擬主機例如 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。