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

推荐订阅源

Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
J
Java Code Geeks
博客园 - 聂微东
B
Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
腾讯CDC
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
美团技术团队
博客园 - Franky
Google DeepMind News
Google DeepMind News
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
The Cloudflare Blog

博客园 - 李文学

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)  评论()    收藏  举报