开启 IIS 中的 32 位元程式支援 ADODB.Connection

Windows 作业系统 IIS (Internet Information Services) 预设值没有支援 MDAC OLEDB, ADODB.Connection 找不到工作处理程序。出现错误讯息 ADODB.Connection 错误 800a0e7a 找不到提供者。它可能未被正确安装。因为预设下没有启动执行 32bit 程式,而 Microsoft.Jet.OLEDB.4.032bit 的程式所以需要启用相关选项。所以在 x64 位元的 IIS 中使用 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。