关于 Active Server Pages 和 Microsoft 数据访问组件中的 80004005 错误
本文列出了各种 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 (http://support.microsoft.com/kb/306269/) PRB:错误 80004005“The Microsoft Jet Database Engine Cannot Open the File '(Unknown)'”(Microsoft Jet 数据库引擎不能打开文件“(未知)”)
189408 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/306345/) PRB:ASP 错误 80004005“Data Source Name Not Found”(未找到数据源名称)
请确保安装了最新的驱动程序。可从以下 Microsoft 网站下载 MDAC 的最新版本:
http://msdn.microsoft.com/dataaccess (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 (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 (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 (http://support.microsoft.com/kb/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 (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 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/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 (http://support.microsoft.com/kb/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,请确保使用的是实际的列名,而不是列的“显示”名称。