asp访问Access数据库出现0x80004005 Unspecified error错误

[ 2009-02-16 08:19:16 | 作者: admin ]
字号: | |
http://hi.baidu.com/apxsoft/blog/item/4281ef07abf0d8cb7b8947df.html

Access数据库出现的0x80004005 Unspecified error问题及解决方案。
[OleDbException (0x80004005): Unspecified error]
引用
ms-help://MS.MSDNQTR.2005APR.1033/enu_kboledb/oledb/251254.htm
SYMPTOMS
When trying to connect to an Access .mdb file, an ODBC error is returned stating "Disk or Network Error". The Microsoft OLE DB Provider for the Microsoft Jet database engine may also return an "Unspecified error" (error code = 0x80004005) message.

The problem can occur only when the data source is opened under the Microsoft Internet Information Server (IIS) or a Microsoft Windows NT service but not under a logged-on user account.CAUSE
Jet creates a temporary file when the engine is started. In doing so, it first checks the TMP environment variable and uses that path to define where the temporary file is created. If it doesn't see a TMP environment variable, it looks for the TEMP environment variable. If TEMP is not defined, it then uses the Windows folder (\WINDOWS or \WINNT).

If TMP/TEMP is defined but points to a nonexistent folder, the error occurs.

Moreover, when opening the Access database through IIS or a Windows NT service, and when IIS or the service is running under the local system account, the TMP or TEMP system environment variable is used. When the Web services or Windows NT service are started using a user account, the TMP/TEMP user profile environment variables is used.RESOLUTION
Define a TMP or TEMP environment variable and assign the variable to an existing folder. If you are accessing the Access database from IIS, be certain to check the system environment settings rather than environment variables of the logged-on user. Also ensure that the IUSER anonymous IIS account has access to the temporary folder.

You must restart the computer after changing any environment variables.
Environment variables are set under Windows NT 4.0 by going to the Control Panel and clicking System and then selecting the Environment tab.
根据前面的一些文章来分析,我决定做以下一个测试:

1、删除IIS在Windows下的帐号(Internet Guest Account)的文件写权限当然,只对项目的目录。
2、同时也删除它在临时目录(C:\Documents and Settings\WEBB-COUNTRY-WU\ASPNET\Local Settings\Temp,不的机器所有不同)的写权限。

好了,终于在我的电脑上也出现了同样的错误,而且所有的与数据库相关的页面都不能访问。而且根据MSDN里的说明,这是因为没有权限在临时目录里写文件而产生的,与之相同。然而,问题又在于,服务器上的并不是一直错误,而是一时错误一时正常。

唯一可以解释的就是服务器临时文件满了!!!!而这又不好证明,我不可能一直测试,让我的临时文件也满了(就算是COPY文件到临时目录里,也不能算是IIS帐号的,而是操作者的),而且临时文件它自己(OLEDB的链接线程)也会删除的。只好另外想办法,就是用磁盘配额。给IIS帐号:Internet Guest Account在C盘只有10K的写权限,然后测试,果然问题如期而致。。。。。。

到此,可以肯定:服务器上的临时文件太多了,看来是要重新启动一下服务器,或者要清理临时文件或者调整磁盘空间了。。。。。。
[最后修改由 admin, 于 2009-02-16 08:22:29]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1207

这篇日志没有评论。

此日志不可发表评论。