You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2019/IIS10下Access数据库ODBC连接权限异常求助

IIS10 + Access 数据库普通用户连接失败,管理员访问后恢复的彻底解决方法

环境与问题现象

  • 服务器:Windows Server 2019 + IIS10
  • 数据库:Access .mdb 文件,global.asa中的连接代码:
    strconn = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\inetpub\intranet\data.mdb"
    set conn = Server.CreateObject("ADODB.Connection")
    conn.open strconn
    
  • 身份验证:已启用Windows身份验证
  • 核心问题:普通用户访问时弹出验证窗口且验证失败;管理员登录一次后,所有普通用户(无论哪台电脑)都能正常访问,问题出在conn.open strconn这一行。

已做排查

  • 检查过数据库文件、ACEODBC.DLL的权限
  • 尝试过ODBC系统数据源
  • 用ProcessMonitor排查,未发现拒绝访问记录
  • 卸载重装过Access数据库引擎
  • 排查c:\temp、c:\windows\temp目录权限,确认首次连接会创建JETxxx.tmp文件,空闲超时后消失,和当前现象完全吻合

临时方案

将空闲超时设为0,用管理员账号访问一次内网,但服务器或IIS重启后必须重复操作,急需彻底解决。

彻底解决方法

1. 给IIS应用池身份配置临时目录权限

Access驱动创建临时文件时,用的是应用池的运行身份,不是访问用户的账号。必须确保这个身份对系统临时目录有读写权限:

  • 打开IIS管理器,找到内网站点对应的应用池,查看它的“标识”(默认是ApplicationPoolIdentity)
  • 打开资源管理器,右键C:\Windows\Temp(如果有C:\Temp也一起处理)→属性→安全→编辑→添加:
    • 若使用ApplicationPoolIdentity,直接输入IIS AppPool\[你的应用池名称],验证名称无误后确定
    • 给该身份勾选读取和写入、修改权限,保存设置

2. 连接字符串中指定专属临时目录

直接在连接字符串里显式指定Access驱动的临时文件路径,避开系统默认临时目录的权限问题:

strconn = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\inetpub\intranet\data.mdb;TempDir=C:\inetpub\intranet\tmp"
  • 先创建C:\inetpub\intranet\tmp目录,给应用池身份和所有内网用户开放读写权限
  • 该目录建议和网站目录在同一分区,避免跨分区的权限限制

3. 调整Windows身份验证的内核模式设置

如果启用了Windows身份验证,检查内核模式是否开启,避免模拟权限冲突:

  • 打开站点的“身份验证”→Windows身份验证→高级设置,确保“启用内核模式身份验证”处于勾选状态
  • 若开启了用户模拟,去站点“高级设置”里确认模拟用户(或Authenticated Users组)对临时目录有读写权限

4. 给Access引擎文件添加普通用户权限

找到Access数据库引擎的安装目录(比如Office 2019对应C:\Program Files\Microsoft Office\root\Office16),找到ACEODBC.DLL:

  • 右键文件→属性→安全,添加Authenticated Users组,赋予读取和执行权限,确保普通用户能正常加载驱动

内容的提问来源于stack exchange,提问作者Didier CLAPIER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:27:44