迁移至Server2019后IIS10下Access数据库出现80004005错误求助
问题分析与解决方案
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] 您的网络访问已中断。请关闭数据库后重新打开以继续。
/AGSafety/AGSafetydbconn.inc,第5行
核心排查方向
IIS 10与IIS 6的运行环境差异是潜在诱因,但并非唯一原因,以下是针对性的解决步骤:
1. 应用程序池身份权限问题
IIS 10默认的ApplicationPoolIdentity虚拟账户,在访问Access文件时的权限映射逻辑和IIS 6完全不同,容易触发权限类错误:
- 操作:将应用程序池身份改为**本地系统(LocalSystem)**或拥有明确文件权限的域/本地账户;
- 验证:确保该账户对数据库文件所在文件夹拥有读取、写入、修改权限(需包含
.ldb临时文件的创建权限)。
2. 32位/64位驱动兼容性
Server 2019默认是64位环境,若原ASP应用为32位编写,64位ODBC驱动会导致兼容性冲突:
- 操作1:在应用程序池高级设置中,将「启用32位应用程序」设为
True; - 操作2:安装32位ODBC Access驱动(Office 2016及以后版本需单独下载32位驱动包,无法通过Office安装包直接获取)。
3. 文件锁定与共享配置
IIS 10的并发处理机制更严格,容易引发Access数据库文件锁定:
- 避免将数据库放在网络共享目录,优先迁移到本地磁盘;若必须用共享,需开启Server 2019默认禁用的SMB 1.0;
- 修改连接字符串,添加
Mode=Share Deny None参数,允许多进程访问:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\your\db.mdb;Mode=Share Deny None;
4. IIS管道模式兼容
原IIS 6使用经典管道模式,IIS 10默认的集成模式可能导致老ASP应用兼容性问题:
- 操作:将应用程序池的「托管管道模式」改为经典模式。
结论
IIS版本差异是潜在因素,但更可能是身份配置、驱动兼容性或文件权限的细节问题。优先排查应用程序池身份和32位驱动支持,再逐步验证其他设置。
内容的提问来源于stack exchange,提问作者Monte Outlaw
相关产品推荐
相关产品推荐

