asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法

      前些天突然公司的网站(asp+access)不能访问了,症状是:页面无法打开、服务器上dllhost.exe导致CPU占用率一直居高不下,开始的时候或以被注入攻击了,所以检查网站所有脚本代码,结果没有发现任何异常现象。用瑞星扫描了一下,还真的发现了一个叫什么Backdoor.ASP.Mini.h的病毒,扫描完了以为没事儿了,重启IIS结果问题依旧:(,无奈之余只能继续一步一步调试,结果发现在连接数据库的时候出现了错误,因为脚本代码把错误直接给清掉了没有显示^_^!,这下发现问题的所在了,立马做一测试页面访问数据库,出现了:

Microsoft OLE DB Provider for ODBC Drivers 错误 ''80004005''
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 ''Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet''。

的错误,网上搜了这个问题出现的频率还挺高,逐一测试了一下,结果发现如下方法比较有效:

------------------------------------------------------------------------------------------------------------------------------

打开 FileMonitor 这个监控软件,因为默认情况下它跟踪的信息太多,造成查错如同大海捞针。
这里有个技巧就是先打开监视,然后选择你不需要监控的那些进程,或者一个目录。
点菜单里的: Edit -> Exclude Process 或 Edit -> Exclude Path 排除掉不需要监控的内容。
然后就会发现产生的信息大大减少了。
清空输出,重新开始监控,刷一下网页,再停止监控。很快看到一个信息:

115 15:59:40 DLLHOST.EXE:2804 CREATE C:/WINNT/TEMP/JET5EA6.tmp ACCESS DENIED CR/IUSR_CR 

可见是因为 C:/winnt/temp 目录没有对 CR/IUSER_CR 账户开放权限,导致没法创建临时文件(奇怪的是 CR/USER_CR 这个账号访问 Access 的时候需要生成临时文件)。

找到这个目录,设置一下权限。然后刷新网页就会发现好了。
当然具体情况下目录名可能不一定就是这个,但是查错方法就是这样的了,一般都可以解决。

quote:http://www.cnblogs.com/RChen/archive/2006/03/28/239785.html

-------------------------------------------------------------------------------------------------------------------------

至此,我的问题也解决了,但是不明白的就是为什么会产生这样的问题,是什么原因导致的?

你可能感兴趣的:(脚本语言)