开启 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。