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

ASP Classic通过DSN连接带密码Access数据库时80004005错误求助

带密码Access数据库ASP连接错误(80004005)解决思路

问题背景

迁移旧ASP系统(原Windows Server 2012 + Access Database Engine 2010)到Windows Server 2022后,连接带密码的Access数据库时触发错误:

Microsoft OLE DB Provider for ODBC Drivers Error "80004005"
[Microsoft][ODBC Driver for Microsoft Access] 不允许密码。

无密码数据库使用DSN连接正常,原系统相同代码可正常运行。

解决方法

1. 改用OLE DB直接连接(替代DSN)

放弃DSN方式,直接使用OLE DB连接字符串,避开ODBC驱动的兼容性问题:

Dim objConn, dbPath, dbPass
dbPath = Server.MapPath("/path/to/your/database.mdb") ' 替换为实际数据库路径
dbPass = "examplepass"
Session.Timeout=15
Set objConn=Server.CreateObject("ADODB.Connection")
objConn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";Jet OLEDB:Database Password=" & dbPass & ";"
objConn.Open

' 执行数据库操作...

objConn.Close
set objConn = nothing

如果是Access 97格式,可将Provider改为Microsoft.Jet.OLEDB.4.0,但需确保对应驱动已安装。

2. 匹配驱动与应用池位数

  • Windows Server 2022默认可能安装64位Access Database Engine,但ASP应用池默认可能是64位,而旧系统可能用32位驱动。需确认:
    1. 打开IIS管理器,找到对应应用池,进入高级设置,将启用32位应用程序设为True。
    2. 安装32位版本的Access Database Engine(若已装64位,需卸载后再装,或用被动安装命令避免冲突:AccessDatabaseEngine.exe /passive)。

3. 重新配置DSN(使用正确驱动)

不要使用旧的Jet ODBC驱动,改用ACE驱动配置DSN:

  • 32位DSN:打开C:\Windows\SysWOW64\odbcad32.exe,创建系统DSN时选择Microsoft Access Driver (*.mdb, *.accdb)。
  • 64位DSN:打开C:\Windows\System32\odbcad32.exe,选择相同驱动。
  • 注意:DSN的位数必须与应用池的位数一致(32位应用池对应32位DSN)。

4. 检查文件权限

确保IIS应用池的身份(如IUSR、ApplicationPoolIdentity)拥有数据库文件所在文件夹的读取权限(若系统有写入操作,还需写入权限)。部分情况下,权限不足会抛出误导性的密码错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:05:13