以下资料来自UDSKY,有兴趣的朋友可以去看看!
ASP中常见的错误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.
原因:
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录
没有正确的权限.(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)
检查文件和目录的权限. 确定你能够在该目录中有能够新建和删除临时文件的权限。
这些临时文件其实是数据库建立在同一个目录下的文件, 但是要注意的是,有可能这些文件
也可能建立在别的目录,例如 /Winnt.
使用NT的文件监视程序监视文件失败时到底是访问了什么目录。
这个NT的文件监视程序可以在这个地方下载http://www.sysinternals.com.
如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,
还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,
这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。
这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用
本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。
还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
--------------------------------------------------------------------------------
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] 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.
原因:
最可能的原因是ConnectString是一个在global.asa中初始化的Session变量 ,但是global.asa
却没有正常工作。解决办法是,检查赋值时是否正确:(在你的asp中加入下面的代码)
<%= "'auth_user' is " & request.servervariables("auth_user")%>
<%= "'auth_type' is " & request.servervariables("auth_type")%>
<%= "connection string is " & session("your_connectionstring")%>
还有一个原因就是你在你的ConnectString中加入了多余的空格,例如
DSN = MyDSN; Database = Pubs;
试试改成下面这个样子:
DSN=MyDSN;Database=Pubs;
如果是global.asa还没有工作,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。
还有可能错误出现的原因是DSN名称没找着,这可以采用我提供的id=36767的办法解决。
最后是检查是否安装了最新的驱动程序,既是否是最新的MDAC版本。
--------------------------------------------------------------------------------
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not ??
原因:
这个错误有可能是出现在你的计算机上软件安装(或则反安装)的顺序上。
如果ODBC的版本不一致的话,就会发生该错误。
解决办法是安装最新版本的MDAC
--------------------------------------------------------------------------------
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open
registry key 'DriverId'.
原因:
这个错误发生在爱从注册表中读取数值的时候。 使用regedit32.exe检查你的注册表的权限。
你也可以使用NT中的注册表监视程序(NTRegMon)来看读取失败信息。 该程序到这找:http://www.sysinternals.com
--------------------------------------------------------------------------------
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).
原因:
两个原因:当一个数据库中包含有分别在不用机器上的许可关系时,
这也可能发生在同一台机器上,当你给一个关系设置了UNC路径,而另一个关系却是本地路径。
错误原因是:
当用户使用IIS匿名帐号登录后,对本地这台机器而言他是有权的,但是对于一个UNC路径的机器,
另外这台机器是不会认为你当前匿名登录的帐号在它那上面也是合法的。
这样它就不允许你访问它上面的资源,导致错误。
两个解决办法:
1。在IIS工具中,改变IIS匿名帐号成另外一个基于域的帐号。(也就是不使用匿名登录)
2。或则在那台你要访问资源的机器上也创建一个和当前匿名帐号同样的帐号,使用同样的密码。
--------------------------------------------------------------------------------
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC
Microsoft SQL Driver] Logon Failed()
原因:
该错误是由SQL Server产生的,当它不接受或则不能够认识这个登录帐号的时候,或者没有使用管理员身份登录,
也可能是在NT中没有SQL影射帐号造成的。
使用系统管理员帐号(SA)登录,一般密码应该为空.注意,这时必须使用CoonectString而不能够使用DSN文件。
因为DSN中没有保存用户名和密码。
检查NT是否给SQL映射了帐号。
--------------------------------------------------------------------------------
错误信息
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 Server的Enterprise Manager中,选择Server/SQL Server/Configure[ASCII
133]/Security Options/Standard.
如果是运行在IIS4中,取消选择该项目的Password Synchronization选项。
--------------------------------------------------------------------------------
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't lock file.
原因:
也许是没有正确的权限生成Access数据库的锁定文件(.ldb)
默认时,该文件和你的数据库是同一个目录的。
给匿名帐号全权访问数据库共享目录的权限。
有时是因为文件是因为共享时有意使用了只读的权限限制。试试使用下面的代码。
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeShareDenyWrite '8
--------------------------------------------------------------------------------
错误信息
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.
原因:
路径非法。最可能发生在当Global.asa和CoonecntString被使用到另外一台机器上的时候。
--------------------------------------------------------------------------------
错误信息
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][DBMSSOCN] General network error. Check
your network document
原因:
当装有SQL Server的机器改名的时候。但是DSN还使用了原来的机器名。
7.我使用定义记录集高级对话框定义了一个变量,按下“OK”按钮后,为何提示我“P1ease Provide a name for the variable:”?
可能你多按了一下“+”按钮,造成了一个空行。其实这也是UltraDev的一个小BUG。本来应该有容错处理的。你可以用鼠标点击空行,单击“-”按钮删除空行即可。如果还是不行,继续删除空行。
--------------------------------------------------------------------------------
8.我在网页里录入时,发现行跟行之间的距离不是太理想,如何才能调整行距?
最好使用表格来实现精确的行距。
--------------------------------------------------------------------------------
9.刷新活动数据的时候,得到了一个错误信息: provider error’80004005,Unspecified error:
/Sites/BHPBOok/ADBook.asp,line 3.
我查看了第三行,是下面一段代码:rsBHPBook.ActiveGonnection=“dsn=dsBHPBook;
停了一段时间后,我又刷新了一遍活动数据,而这次正常了,并且时好时坏,这是为什么?
你的服务器可能使用的是NT4或者PWS,这是Microsoft已经公布的一个BUG,暂时没有办法解决。如果你真的想解决的话,请升级你的服务器,用windows 2000吧。
--------------------------------------------------------------------------------
10.我想得到访问我的网页的人的IP地址,我该如何做?
使用Request.ServerVariables("REMOTE_ADDR")可以得到用户的IP地址。如果你想使用IP地址,应该这么写:<%=Request.ServerVariables("REMOTE_ADDR")%->。
--------------------------------------------------------------------------------
11.在作插入页时失败,无法插入记录,为什么?
可能你的字段不允许为空,当你在插入页时,如果有个字段没有录入数据,就会无法插入记录。解决办法:修改字段的属性,允许字段为空。或者在插入页中给每个字:段都赋值。
--------------------------------------------------------------------------------
12.我在浏览器中打开本地机上的ADBook.ASP,想进行预览,为何提示我是下载该文件还是打开该文件?
该文件中含有只有在服务器上才能执行的脚本,所以在本地是无法打开的。就会出现你以上所说的现象。把它上传到服务器上,然后再打开就可以了。
--------------------------------------------------------------------------------
13.我的本地机也是服务器,为何还是出现上述的提示?
你用的协议不对。你不能按文件的方式打开你的网页,一定要在地址栏中键入网址才能正确打开。
14.Ultradev支持哪一种版本的JSP。
支持JSP1.0,任何一种支持JSP1.0的JSP服务器都能和Ultradev产生的代码兼容。
目前为止,Ultradev 已经通过了以下服务器的测试:
IBM WebSphere;
Netscape Enterprise Server (iPlanet);
JRun 2.3.3 and 3.0;
Apache Web Server;
UltraDev 不包含支持JSP 1.1的内嵌模块. 然而UltraDev可以通过javascript API扩展特性来支持JSP 1.1 特性。
--------------------------------------------------------------------------------
15.UltraDev 目前支持哪一种版本的CFML?
UltraDev 目前支持ColdFusion Server 4.0. 你可以在ColdFusion Server 4.0 or 4.5上运行UltraDev程序。
--------------------------------------------------------------------------------
16.ASP可以在Linux系统中被服务器调用吗?
可以。你可以通过运行于Linux系统中的Apache Web server调用由ChiliASP建造asp站点。
--------------------------------------------------------------------------------
17.UltraDev可以运行于Apache Web Server 中吗?
当然能。如果你从Jakarta.apache.org.下载 Tomcat extension for Apache,你就可以在 Apache系统中运行jsp站点。同时你也可以购买 ChiliSoft公司的ASP extension for Apache程序来实现相同的目的。
--------------------------------------------------------------------------------
18.UltraDev支持PHP吗?
UltraDev目前还没有包含支持 PHP的内嵌模块。但是UltraDev通过 javascript API而具有强大的可扩展性能。
--------------------------------------------------------------------------------
19.UltraDev 目前支持哪一种版本的JDBC。
JDBC 1.0 因为 JDBC 的相后兼容性,你可以使用 JDBC 1.0 或 2.0 版本的驱动程序。
--------------------------------------------------------------------------------
20.UltraDev支持 COM 对象吗?
UltraDev没有包含支持COM 对象的内嵌模块 但是,你可以在HTML editor添加脚本来建立COM 对象。或者也可以用javascript API.建立objects and server behaviors。
--------------------------------------------------------------------------------
21.那些JSP servers 已经通过了 UltraDev的成功测试?
Allaire JRun 2.3.3
Allaire JRun 3.0 (RC1)
IBM WebSphere 3.02
Sun JavaWeb Server 2.0
Netscape Enterprise 4.1
22.数据库必须在本地机上,才可以被UltraDev调用吗?
你必须有权使用该数据库,不论是在本地机上还是在远程网络上。你可以为run-time 和design-time 建立不同的数据库连接。如果你无权使用远程网络上的数据库,可以用 Microsoft Access建立一个 design time的数据库连接(必须注意的是:本地的数据库和远程网络上的数据库字段名要相互匹配)。
--------------------------------------------------------------------------------
23.UDL(Universal Data Link)文件可以在UltraDev中使用吗?
是的,UltraDev 可以和 ADO一样 调用 UDL 文件.例如, 使用一个 UDL文件作为ASP page的数据源建立一个ADO(Connection String)连接 , 连接字符串: "File Name=C:\mydata\myudlfile.UDL;"
--------------------------------------------------------------------------------
24.怎样建立一个 Oracle 数据库的连接?
ASP sites 你可以通过ODBC driver 或者 OLE-DB driver建立Oracle 数据库的连接. (从Oracle公司的网站获得ODBC 驱动程序 for Oracle 7 and 8)。
Cold Fusion sites 你可以通过ODBC driver建立Oracle数据库的连接. 在Allaire's 网站(需要 Acrobat Reader阅读器)有关于系统配置的详细文章。
JSP sites 你可以通过任何一种 JDBC 1.0 or 2.0 driver for Oracle建立Oracle 数据库的连接.
在http://industry.java.sun.com/products/jdbc/drivers/可以找到相关的驱动程序。
--------------------------------------------------------------------------------
25.怎样建立一个SQL Server 数据库的连接?
ASP sites 你可以通过ODBC driver或者ADO connection建立SQL Server 数据库的连接.
For Cold Fusion sites 你可以通过ODBC driver建立SQL Server数据库的连接. 在Allaire's 网站 (需要 Acrobat Reader阅读器)有关于系统配置的详细文章。
JSP sites 你可以通过任何一种 JDBC 1.0 driver for SQL Server建立SQL Server 数据库的连接.
在http://industry.java.sun.com/products/jdbc/drivers/可以找到相关的驱动程序
--------------------------------------------------------------------------------
26.怎样建立一个MySQL数据库的连接?
For ASP sites 你可以通过ODBC driver或者ADO connection建立 MySQL数据库的连接. 在 Merant站点可以找到相关的驱动程序
JSP sites 你可以通过 任何一种 JDBC 1.0driver for MySQL建立 MySQL数据库的连接.
在 industry.java.sun.com/products/jdbc/drivers/可以找到相关的驱动程序
--------------------------------------------------------------------------------
27.必须使用 ODBC?
For ASP sites你可以通过OLE-DB建立数据库的连接。
For JSP sites 你可以通过JDBC 1.0 or 2.0 driver.建立数据库的连接。
--------------------------------------------------------------------------------
28.我怎样获得JDBC drivers?
你可以从Sun's Java 网站获得JDBC 1.0 and 2.0 drivers 。
--------------------------------------------------------------------------------
29.那些数据库可以被UltraDev调用?
Oracle 8.1.5 Enterprise
IBM DB2 Universal 5.2
Access 2000
Microsoft SQL Server 7.0
Microsoft SQL Server 6.5
31.Error '80040e57'-Data type mismatch in criteria expression
问题:
SQL error 80040E57 发生在下面情况: 使用 "Insert Record" 或 "Update Record" 服务器行为命令向Microsoft Access加入一个空字符串时。
原因:
MS Access是功能强大的数据库系统,它有严格的规则来定义column values。 在 MS Access"Date/Time"数据类型中,空的字符串值(SQL)不能被存储。
解决方法:
目前的唯一方法是避免在MS Access的 "Date/Time"数据类型中使用空字符串“” 和任何定义范围外的值执行inserting 或updating的命令。
--------------------------------------------------------------------------------
32.80004005 - data source name not found and no default driver specified
错误信息:"80004005"data source name not found and no default driver specified” 在通过浏览器或活动数据模式观看含有记录集的页面时。易发生次类错误信息。
原因: 有几种情况可能引发次类错误:
1.Data Source Name (DSN)设立出错,建立的是用户DSN(User DSN)而不是系统DSN(System DSN), 解决的方法是删除用户DSN,再建立一个系统DSN。注意:如果不删除用户DSN,则双DSN 会引发新的ODBC错误。
2. Access文件由于一个 lock file (.ldb)文件的存在而被锁定(即使建立一个新的System DSN也同样存在此问题 )。lock file (.ldb)文件可能会引起其它DSN访问数据库.
解决的方法是:建立一个新的 DSN (user or System),而后找到lock file (.ldb),删除。重启您的计算机。
3. Access文件被定义了不正确的使用权限。 通过资源管理器找到数据库文件。右击-》属性-》安全标签-》Permissions 按钮-》选中 访问权限为“everyone”形式。
31.Error '80040e57'-Data type mismatch in criteria expression
问题:
SQL error 80040E57 发生在下面情况: 使用 "Insert Record" 或 "Update Record" 服务器行为命令向Microsoft Access加入一个空字符串时。
原因:
MS Access是功能强大的数据库系统,它有严格的规则来定义column values。 在 MS Access"Date/Time"数据类型中,空的字符串值(SQL)不能被存储。
解决方法:
目前的唯一方法是避免在MS Access的 "Date/Time"数据类型中使用空字符串“” 和任何定义范围外的值执行inserting 或updating的命令。
--------------------------------------------------------------------------------
32.80004005 - data source name not found and no default driver specified
错误信息:"80004005"data source name not found and no default driver specified” 在通过浏览器或活动数据模式观看含有记录集的页面时。易发生次类错误信息。
原因: 有几种情况可能引发次类错误:
1.Data Source Name (DSN)设立出错,建立的是用户DSN(User DSN)而不是系统DSN(System DSN), 解决的方法是删除用户DSN,再建立一个系统DSN。注意:如果不删除用户DSN,则双DSN 会引发新的ODBC错误。
2. Access文件由于一个 lock file (.ldb)文件的存在而被锁定(即使建立一个新的System DSN也同样存在此问题 )。lock file (.ldb)文件可能会引起其它DSN访问数据库.
解决的方法是:建立一个新的 DSN (user or System),而后找到lock file (.ldb),删除。重启您的计算机。
3. Access文件被定义了不正确的使用权限。 通过资源管理器找到数据库文件。右击-》属性-》安全标签-》Permissions 按钮-》选中 访问权限为“everyone”形式。