惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - 李文学

Oracle查询表中指定库名,表约束名的上下表依赖关系 linux简版启动,关闭jar命令 Oracle11.2实例重启 主流数据库 “匹配更新、不匹配插入” 语法详解(Oracle/MSSQL/MySQL) Centos7扩容2 wps,两个页签比较常用函数 Oracle常见SQL示例 VUE-手机号验证 Centos7安装mysql8 Centos7安装ffmpeg 不同数据库标识长度检查 Centos7重置网络 Centos7磁盘空间自动处理 Oracle11新建业务库账号信息 Java启动JAR,.sh版 linux常用命令 centos7防火墙IP白名单维护 centos7安装lamp,php5.6,mysql5.7,xdebug MSSQL最大内存设置
Windows Server 2016 64位 ASP+Access(.mdb) 80004005 最简解...
李文学 · 2026-04-02 · via 博客园 - 李文学

一、问题现象

环境:Windows Server 2016 64位 + IIS 10 + 经典 ASP + Office 2010 64位 + Access 2010 64位引擎 + .mdb 格式数据库

核心报错:

  • 3706:未找到提供程序
  • 80004005:未指定的错误

反复调整驱动、连接字符串、文件夹权限,仍无法正常连接数据库。

二、根本原因

  • 架构不匹配:64位应用池必须搭配64位ACE驱动,Jet 4.0无64位版本,无法使用
  • 驱动冲突:64位Office与64位ACE驱动直接安装会冲突,需静默安装
  • 权限缺失:ACE驱动运行需写入C:\Windows\Temp,无权限直接报80004005(核心原因)
  • 权限不全:仅给网站目录授权不够,需同时给.mdb文件单独授权

三、最简修复步骤

1. IIS应用池配置(关键)

  1. 打开IIS管理器 → 应用程序池 → 找到目标站点对应的应用池
  2. 右键 → 高级设置 → 找到「启用32位应用程序」,设置为 False(切换为64位模式)
  3. 右键应用池 → 回收,使配置生效

2. 驱动正确安装

  1. 控制面板 → 程序和功能 → 卸载现有「Microsoft Access Database Engine 2010」
  2. 下载64位版本AccessDatabaseEngine_X64.exe
  3. 以管理员身份运行CMD,执行静默安装(跳过Office冲突):
AccessDatabaseEngine_X64.exe /quiet /norestart

3. 权限一键配置(管理员CMD执行,直接复制)

:: 网站目录授权(替换为你的站点目录)
icacls "E:\www\www.flbj.net" /grant "IIS_IUSRS:(OI)(CI)(F)" /T
icacls "E:\www\www.flbj.net" /grant "IUSR:(OI)(CI)(F)" /T
icacls "E:\www\www.flbj.net" /grant "NETWORK SERVICE:(OI)(CI)(F)" /T

:: 系统临时目录授权(核心,解决80004005)
icacls "C:\Windows\Temp" /grant "IIS_IUSRS:(OI)(CI)(F)" /T
icacls "C:\Windows\Temp" /grant "IUSR:(OI)(CI)(F)" /T
icacls "C:\Windows\Temp" /grant "NETWORK SERVICE:(OI)(CI)(F)" /T

:: 重启IIS生效
iisreset

4. 正确ASP连接代码(直接复制使用)

<%
Dim conn, dbPath
Set conn = Server.CreateObject("ADODB.Connection")
dbPath = Server.MapPath("工具书.mdb") ' 替换为你的数据库文件名

' 64位ACE驱动专用连接字符串
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"

Response.Write "✅ 数据库连接成功!"
conn.Close
Set conn = Nothing
%>

四、错误速查(快速定位问题)

错误码

核心原因

快速解决

3706

应用池与驱动位数不匹配

应用池启用32位设为False,使用64位ACE驱动

80004005

C:\Windows\Temp无写入权限

执行步骤3的Temp目录授权

五、关键结论

  • 升级Windows Server 2022无效,64位架构限制与系统版本无关
  • 64位系统下,彻底弃用Jet 4.0,仅使用Microsoft.ACE.OLEDB.12.0驱动
  • 80004005错误99%是Temp目录权限问题,优先排查此处
  • 按本文步骤配置,无需额外操作,可直接稳定运行

六、适用范围

Windows Server 2016/2019/2022 64位、经典ASP、Access .mdb数据库、IIS 10及以上版本

posted @ 2026-04-02 14:18  李文学  阅读(59)  评论()    收藏  举报