64位Win7 IIS7出现80004005错误的原因和解决办法
在64位的Windows 7系统上用IIS7跑基于Access的ASP系统时,很多小伙伴都会碰到一个让人头疼的错误:“Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'”。咋回事呢?其实,主要是因为64位系统本身不支持微软那个老旧的OLE DB Provider for Jet驱动,也不支持通过Microsoft Access Driver (*.mdb)方式访问数据库。
简单说就是你用的这些驱动是为32位设计的,64位系统不认账,所以才会出错。那咋办呢?这时候你可以考虑修改IIS应用程序池的设置,把应用程序池改成“启用32位应用程序”,这样IIS就能用32位的方式来跑程序,自然也就不会再报这个错误了。
具体步骤大致是:
- 打开IIS管理器,找到对应网站使用的应用程序池。
- 右键选择“高级设置”,找到“启用32位应用程序”,设为True。
- 应用保存,重启应用程序池。
这样操作了之后,那个80004005的错误大概率就能解决啦。

Win7 IIS调试ASP出现3706错误和数据库读写权限问题怎么办
哎,遇到错误3706,提示“未找到提供程序”,其实这跟上面提到的问题挺像。如果你哥们的机器里已经装了64位的Jet 4.0驱动,那可能不太用动启用32位应用程序池。但大多数情况嘛,尤其是老旧的数据库连接技术,还是启用32位程序池靠谱而有效。
当然,在你动手之前,还是要备份配置和文件,防止一不小心搞坏了环境,真是心塞。
还有一点很重要,常见的只能读不能写数据库问题,其实十有八九是权限问题惹得祸。Windows 7的安全策略比较严格,默认给IIS相关用户的写权限是没有满的。所以,你得操作:
- 给WWWROOT目录下的网站文件夹,赋予IIS_IUSRS用户“完全控制”权限。
- 同样地,给C:\WINDOWS\TEMP目录下IIS_IUSRS用户也设置满权限。
- 甚至有时候,降低整个inetpub文件夹的安全级别,运行命令:
icacls c:\inetpub /setintegritylevel (OI)(CI)low
这样权限松一些,程序才能对数据库文件进行写操作。
还有个很重要的点就是,要确认你的ASP网站配置里“启用父路径”功能是打开的(设置True),这样数据库连接路径才不会乱七八糟,引发连接错误。
要是500错误的话,别忘了打开“详细错误信息”,对症下药,检查ASP代码有没有拼写错误哦!
顺带说句,想本地运行ASP文件,确保路径设置正确,IIS_IUSRS和IUSR账户对文件夹有读取权限,必不可少。

相关问题解答
-
64位Win7为什么跑Access数据库总是报80004005错误?
哎呀,别急别急,这完全是因为64位系统和老旧的32位Access驱动不兼容啦!64位Win7不支持微软那个老掉牙的OLE DB Provider for Jet,导致访问Access数据库时跑出“80004005”错误。解决的方法就是改成32位应用程序池,让IIS用32位方式来跑程序,so easy! -
出现ASP调试时“错误3706,未找到提供程序”该怎么办?
这主要说明你的系统里可能缺少对应的数据库驱动或者没启用32位应用程序池。通常开启32位应用程序池就能解决问题。实在不行,检查Jet驱动是否安装好,别忘了备份你的配置,动手前安全第一! -
我网站数据库能读不能写,是不是权限问题?
大哥,这种情况99%是文件夹权限不给力!你得去给那个存数据库的文件夹及系统临时文件夹的IIS用户(IIS_IUSRS)搞个“完全控制”权限才行,不然Windows安全策略咋可能让你随便写东西呢。权限搞定,写入自然没忧虑! -
如何确认ASP程序本地运行没有问题?
其实挺简单,第一步确认物理路径设置没错,文件扩展名也对;然后保障IIS_IUSRS和IUSR账户对路径有读权限;接着打开“详细错误信息”,碰到500错误就能定位到具体原因。最后别忘了配置一下数据库连接和相应权限,OK啦!
发布评论