ASP和 Microsoft 数据访问组件中 80004005 错误的疑难解答指南

关于 Active Server Pages 和 Microsoft 数据访问组件中的 80004005 错误的疑难解答
察看本文应用于的产品
文章编号:306518

概要
更多信息
错误信息列表
参考
与 Microsoft Access 有关的文章
与 Microsoft SQL Server 有关的文章
与用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序有关的文章
与 Novell NetWare 有关的文章
与 Oracle 有关的文章
其他文章
这篇文章中的信息适用于:
概要
本文列出了各种 80004005 错误信息、导致错误信息的 最常见原因以及解决问题的疑难解答步骤。收到 80004005 错误的是 Active Server Pages 中的 Microsoft 数据访 问组件 (MDAC),其中包括 Microsoft ActiveX 数据对象 (ADO)、OLE DB 以及远程数据服务 (RDS)。虽然本文假 定您是在 Active Server Pages (ASP) 页中使用 ADO,但是导致错误的原因以及许多疑难解答步骤适用于任何使 用 ODBC 进行数据访问的环境。 

错误信息列表80004005 错误信息表示无法访问您的数据。此错误可以解释为“由于某种原因,我无法访问您的数据”。本节列出了最常见的错误信息的内容和原因。有关可能有助于确定错误原因的其他相关文章,请参见“参考”一节。虽然本文试图提供尽可能多的信息,但可能还是有所遗漏。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Microsoft Access 97 Driver]
The Microsoft Jet database engine cannot open the file ‘(unknown)’.It is already opened exclusively by another user, or you need permission to view its data. 

原因
出现此信息的原因有多种。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306269 PRB:错误 80004005“The Microsoft Jet Database Engine Cannot Open the File ‘(Unknown)’”(Microsoft Jet 数据库引擎不能打开文件“(未知)”)
189408 FIX:在 IIS 4.0 和 IIS 5.0 中 ASP 无法访问网络文件
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn’t use ‘(unknown)’; file already in use.

原因无法为多个用户正确锁定数据库。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
174943 PRB:80004005“Couldn’t Use ‘(unknown)’; File Already in Use”(无法使用“(未知)”,文件已在使用)
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Driver Manager]Data source name not found and no default driver specified. 

原因
此错误是比较常见的错误之一,有多种解决方法。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306345 PRB:ASP 错误 80004005“Data Source Name Not Found”(未找到数据源名称) 请确保安装了最新的驱动程序。可从以下 Microsoft 网站下载 MDAC 的最新版本:
http://msdn.microsoft.com/dataaccess
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Driver Manager] Data source name not ?? 

原因
出现此错误的原因是,计算机上安装和卸载软件的顺序有问题。如果 ODBC 核心文件变得不同步(它们的版本应该都相同),您可能会收到此错误。
要更新所有的核心 ODBC 驱动程序,请从以下 Microsoft 网站安装 MDAC 的最新版本:
http://msdn.microsoft.com/dataaccess

错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open registry key ‘DriverId’.
原因
当 您从注册表中读取值时,会出现此错误。使用注册表编辑器 (Regedt32.exe) 检查注册表项的权限。还可以使用 Windows NT 注册表 监视器 (NTRegMon) 检查注册表读取故障。可以从以下 Sysinternals 网站下载 NTRegMon:
http://www.sysinternals.com
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).

原因
导 致此错误的原因有两种,它们都与权限有关。当数据库驻留在 Web 服务器以外的计算机上时,或者当您使用通用命名约定 (UNC) 路 径 (\\Server\Share) 引用数据库时,会出现此错误。即使数据库和 Web 服务器在同一台计算机上,当您使用 UNC 路径 时,Web 服务器也假定数据库驻留在网络上的不同计算机上。
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
175671 PRB: 访问 SQL 时出现 80004005 ConnectionOpen (CreateFile()) 错误 有关委派、 Microsoft Internet Information Server (IIS) 如何使用身份验证保护网站,以及诸如此类的问题的更多信息, 请参考以下 Microsoft 网站:
Internet 开发人员的 IIS 身份验证和安全 (IIS Authentication and Security for Internet Developers)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnauth/html/dnauth_security.asp
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
Microsoft][ODBC Microsoft SQL Driver] Logon Failed() 

原因
如果 SQL Server 不接受或者不能识别提交的登录帐户和/或密码(如果您使用的是“标准”安全性),或者没有 Windows NT 帐户到 SQL 帐户的映射(如果您使用的是“集成”安全性),SQL Server 就会产生此错误。
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306586 PRB:ASP 中的错误 80004005“Login Failed”(登录失败)的疑难解答
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC SQL Server Driver][SQL Server] Login failed- User:Reason:Not defined as a valid user of a trusted SQL Server connection. 

原因
出现此错误的原因是,SQL 企业管理器中打开了“集成”安全性,以及所用的 Windows NT 帐户没有映射为 SQL 帐户。要解决此问题,请使用以下方法之一:
•配置 SQL Server 以使用“标准”安全性。在 SQL 企业管理器中,右键单击“服务器”,然后单击 SQL Server。在 SQL Server 属性对话框中,单击安全选项选项卡。在身份验证下,单击以选中 SQL Server 和 Windows,然后单击确定
•如果您是在 IIS 4.0 下运行,请清除此项目的密码同步复选框。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn’t lock file. 

原因
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306441 PRB:ASP 中的错误 80004005“Couldn’t Lock File”(无法锁定文件)的疑难解答
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC Microsoft Access 97 Driver]
‘(unknown)’ isn’t a valid path.Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides. 

原因
Web 服务器正在读取的路径不是有效路径。当使用 Global.asa 文件时,如果在 Web 服务器以外的计算机上创建连接字符串,通常会出现此错误。如果路径是一个映射驱动器号,它可能仅对创建连接字符串的客户机有效。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC SQL Server Driver][SQL Server]
The query and the views in it exceed the limit of 16 tables. 

原因
出现此错误的原因是查询过于复杂。对查询是有一些限制的。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC SQL Server Driver][DBNMPNTW]
ConnectionWrite (GetOverLappedResult()). 

原因
如 果您关闭允许匿名用户上下文,在首次请求完成后,Windows NT 将关闭 SQL Server 的管道。这是因为首次连接 到 SQL Server 时用的是 IIS 匿名用户帐户。然后,IIS 或者模拟该同一线程上的浏览器客户端,或者尝试访问在模拟用户上下文中运行的 另一个线程上的连接。不论何种情况,Windows NT 都会检测到使用在别的用户上下文中打开的网络命名管道句柄的企图,并根据安全规则强行关闭管 道。当您使用网络监视器查看 SQL Server 上的连接时,Windows NT 会发出一个命名管道关闭请求,这将导致 Web 浏览器中出现此 错误。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80004005’
[Microsoft][ODBC SQL Server Driver][DBMSSOCN]
General network error.Check your network document

原因
当您重命名 SQL Server 计算机时,会出现此错误。当无法找到计算机名称时,引用原名称的域名系统 (DNS) 将失败。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e21’
Errors occurred
– 或 –
80004005: ConnectionWrite(GetOverLappedResult) 

原因
当您试图在字段中插入超出允许数量的数据时(例如,在格式设置为仅接受 25 个字符的 Microsoft Access 字段中插入 26 个字符),会出现此错误。
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
166659 PRB:再次尝试访问 SQL 数据库时失败
错误信息
Multiple-step OLE DB operation generated errors.Check each OLE DB status value, if available.No work was done. 
原因
导致此错误的原因有多种;请参见“参考”一节,查看与此错误信息有关的文章。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’
[Microsoft][ODBC Microsoft Access 97 Driver]
Syntax error in INSERT INTO statement.

原因
出现此错误的原因是某个列名可能是保留字(如“DATE”)。将列名更改为非保留字(如“SaleDate”)。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e10’
[Microsoft][ODBC Microsoft Access 97 Driver]
Too few parameters.Expected 1. 

原因
出现此错误的原因是您在查询语法中使用了不存在的列名。通常,此错误只不过是一个拼写错误。将数据库中的列名与查询字符串进行对比检查。如果使用的是 Microsoft Access,请确保使用的是实际的列名,而不是列的“显示”名称。

错误信息
系统日志

事件类型: 错误
事件来源: SQL Server ODBC driver support error
事件种类: 无
事件 ID: 0
日期:  2005-9-5
事件:  11:09:33
用户:  N/A
计算机: PCNAME
描述:
事件 ID ( 0 )的描述(在资源( SQL Server ODBC driver support error )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。部分事件包含了下列信
息: Unable to load SQL Server ODBC driver resource DLL.  The application
cannot continue.
.

Microsoft OLE DB Provider for SQL Server 错误 ‘80004005’
不能装载通讯模块。驱动程序安装不正确。

另外一台,系统日志无出错信息
Microsoft OLE DB Provider for ODBC Drivers 错误 ?’
[Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLAllocHandle on SQL_HANDLE_ENV 失败
/test.asp,行17
运行环境:Win2K+IIS5+SQL SERVER2K(SP4)

strConn = “DRIVER={SQL Server};SERVER=127.0.0.1;UID=test;PWD=test;DATABASE=db”(连接字符串如此便会出现上述错误)
strConn = “Provider=SQLOLEDB;Data Source=127.0.0.1;user id=test;password=test@sql;Initial Catalog=db”(用此连接,不会出错)

[解决方案]
从权限角度来考虑,可以重置与数据访问组件相关的文件权限,如.dll文件等(安装SQL SERVER 2000 SP4后出现问题,重置权限后解决,环境是Win2K+SQL Server2K+IIS 5.0)
2005/09/06
Filemon.exe的帮助下找到问题所在(查询哪些文件访问被拒绝,给予相关权限测试)
<system32DIR>/WINSPOOL.DRV,<system32DIR>/sqlsrv32.rll要给IIS的运行运行帐号运行及读取权限

参考
与 Microsoft Access 有关的文章
163159 ACC97:如何使用 ASP 文件查询安全性增强的 Microsoft Access 数据库
166029 PRB:使用 Access 时出现错误“Cannot Open File Unknown”(无法打开未知文件)
167452 PRB:使用 Access 数据源时出现“Not a valid path”(不是有效路径)错误
174943 PRB:80004005“Couldn’t Use ‘(unknown)’; File Already in Use”(无法使用“(未知)”,文件已在使用)
189408 FIX:在 IIS 4.0 和 IIS 5.0 中 ASP 无法访问网络文件
191566 PRB:如果客户端证书已映射则无法访问网络资源
207525 PRB:IIS4:使用 UNC 路径时 ASP/ADO 无法工作
234011 FPSE2000:将窗体结果保存到 Access 数据库时出现 ODBC 错误
306269 PRB:错误 80004005“The Microsoft Jet Database Engine Cannot Open the File ‘(Unknown)’”(Microsoft Jet 数据库引擎不能打开文件“(未知)”)
306441 PRB:ASP 中的错误 80004005“Couldn’t Lock File”(无法锁定文件)的疑难解答
与 Microsoft SQL Server 有关的文章
166659 PRB:再次尝试访问 SQL 数据库时失败
169377 如何在 Active Server Page 中访问 SQL Server
174638 PRB:向 SQL 存储过程传递日期参数时出现 ODBC 错误
175671 PRB:访问 SQL 时出现 80004005 ConnectionOpen (CreateFile()) 错误
178040 PRB:更新/插入操作中的 ConnectionWrite(GetOverLappedResult) – SQL
186726 从 SQL Server 中检索数据时出现错误 80004005
253500 PRB:从 ASP 连接到 SQL Server 时出现“Client Unable to Establish Connection”(客户端无法建立连接)错误信息
297035 FIX:对 SQLOLEDB 一起使用 Parameters.Refresh 时出现关联错误
306586 PRB:ASP 中的错误 80004005“Login Failed”(登录失败)的疑难解答
与用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序有关的文章
172684 XL97:无法撤消图表对象上文本框中的背景色
173742 FIX:如果限制 Web 访问则无法执行 Global.asa
174640 PRB:更新表记录时出现 ASP 错误“The Query Is Not Updateable”(查询不可更新)
175168 PRB:ASP 返回“Operation Must Use an Updateable Query”(操作必须使用可更新的查询)错误
178215 如何配置 Visual InterDev 以使用经验证的 Web 项目
189206 PRB:将默认语言设置为 JScript 时出现“Couldn’t Find File ‘Unknown’”(找不到文件“未知”)错误
190006 浏览 ASP 页面时出现“ODBC Drivers Error 80004005”(ODBC 驱动程序错误 80004005)
194800 PRB:记录集 DTC 中的“Invalid Use Of Default Parameter”(默认参数的使用方式无效)错误
195951 如何从 ASP 中使用 ADO 查询和更新 Excel 数据
201004 PRB:使用数据范围页眉和页脚控件时出现错误 80004005
234205 PRB:文件“(未知)”,出现异常或没有使用记录集 DTC 的数据
238971 错误信息:Microsoft OLE DB Provider for ODBC Drivers Error ‘80004005’(用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80004005”)
306345 PRB:ASP 错误 80004005“Data Source Name Not Found”(未找到数据源名称)
与 Novell NetWare 有关的文章
178045 如何配置 ASP 以读取 Novell 服务器上的数据文件
271214 无法从 IIS 5.0 访问 Netware 5 服务器上的 FoxPro 数据库
271228 IIS 5.0:无法使用 ASP 从驻留在 Netware 5 服务器上的 Access 数据库中获取数据
271459 IIS 4.0:无法从 Netware 5 服务器上的 Access 数据库中提取数据 – 错误信息:File Not Found(找不到文件)
与 Oracle 有关的文章
183345 FIX:ASP、MTS 和连接池中的 ORA-00000 错误信息
222990 FIX:错误:在 Oracle 中调用某些存储过程时出现错误 0x80004005
255084 如何解决 ASP 与 Oracle 之间的连接问题
其他文章
156526 连接到 Access 数据源时出现常规错误 51
184572 PRB:使用 PWS 4.0、Windows 95 和 VID 创建应用程序
194397 错误信息:Application Object Error ‘ASP 0197 :80004005’ Disallowed Object Use(应用程序对象错误“ASP 0197:80004005”不允许的对象使用方式)
197323 如何排查记录集 DTC 中的“ADODB.Connection”错误 800a0bb9
198531 FIX:RDS 2.0 客户端无法将更改提交到 RDS 1.5 服务器
222828 错误信息:Microsoft OLE DB Provider for ODBC Drivers Error ‘80040e4d’(用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e4d”)
225042 错误:错误信息:Error ‘80004005’ Unexpected Error(“80004005”意外错误)
228935 FIX:未初始化字符串变量、空字符串值、Jet 提供程序以及出现的错误
229657 PRB:ASP 0156:80004005 标头错误
237536 PRB:将断开连接的记录集从 MTS 传递到 ASP 时出现 80004005 未指定错误
241456 TPU:错误信息:Server Could Not Validate User Credentials(服务器无法验证用户凭据)
247931 在 Active Server Page 中连接到 SQL Server 使用的身份验证方法
250809 通过 SSL 使用 RDS 时出现“Unexpected Error”(意外错误)
253114 PRB:在 VB COM 对象中使用 DEconnection 时出现 SQL_DRIVER_NOPROMPT 错误
253157 错误:执行 SET IDENTITY_INSERT ON 语句后“标识”字段仍然为只读
253696 PRB:在 IIS 4.0 上使用 ADO 2.5 和 Internet Publishing Provider (MSDAIPP) 无法访问 URL
253779 如何解决 DE 命令的“80020009 Exception Occurred”(出现 80020009 异常)
257556 FIX:当 ODBC 驱动程序返回超过 15 个字符的 TABLE_TYPE 时出现 DB_E_ERRORSOCCURRED
259382 Microsoft Transaction Server (MTS) 知识库文章索引
259383 INFO:ASP 知识库文章索引
265263 PRB:无法为 SQL 查询打开到 OLAP 服务器的客户端游标
269495 PRB:打开 ADO 连接时出现“Multiple-step OLE DB operation generated errors”(多步骤 OLE DB 操作产生错误)
270119 PRB:使用 OpenQuery 通过链接服务器对远程表执行 UPDATE、INSERT 或 DELETE 操作时出现 7357/7320 错误
272583 MOD2000:文档库示例中出现“Multiple-Step OLE DB Operation Generated Errors”(多步骤 OLE DB 操作产生错误)错误信息
272693 安装 Crystal Reports 8 后连接到数据库时出现 0x80004005 ASP 错误信息
273482 PRB:发布窗体时出现“Request Object, ASP 0107 (0x80004005)”(请求对象,ASP 0107 (0x80004005))错误
276020 INFO:使用 Visual InterDev 升级到 Windows 2000
277381 模型名称超过 128 个字符时预测器模型将失败
284067 当密码为空时无法使用基本身份验证为 Exchange 2000 或 SharePoint Portal Server 建立索引
285081 INFO:XMLHTTPRequest 对象需要 Internet Explorer 5.0 或更高版本
286245 PRB:使用 DB2OLEDB 和服务器端 ADO 游标更新记录时出错
288785 INFO:DB2OLEDB 提供程序支持的游标类型
292644 STS:更改密码后出现错误信息:ADO Error 80040E4D:Login Failed for User ‘sa’(ADO 错误 80040E4D:用户“sa”登录失败)
294160 错误:更新新插入的行会导致出现 DB_E_ERRORSOCCURRED
296169 PRB:在 JavaScript 中分配会话变量时出现错误“Session Object, ASP 0168”(会话对象,ASP 0168)
306216 PRB:ASP/ADO/SQL Server 中的错误“Unable to Load Communication Module”(无法加载通信模块)
307002 PRB:ASP/ODBC/SQL Server 错误 0x80040E4D“Login Failed for User ‘(Null)’”(用户“(Null)”登录失败)

发表评论