ASP网页制作中出现Microsoft JET Database Engine(0x80004005)错误的解决方法
网络安全第五章SQL注入攻击与防御

STEP09:通过上一步可知当前查询结果集的参数个数是5,因 此,在地址栏http://192.168.67.135:99/common.asp?id=1后 面加上union select 1,2,3,4,5 from admin_user,使得SQL 查询语句变为select 列 from [表名] where[字段]=1 union select 1,2,3,4,5 from admin_user,以此测试网页内容的显 示方式,即select语句结果集的什么字段会在网页中显示出来, 以便用来显示用户名和密码信息。
UNION语句
SELECT列名称1 FROM 表名称1 UNION SELECT列名称2 FROM 表名称2
ORDER BY语句
SELECT Name FROM Class1 ORDER BY Name
用户能够控制 输入
程序原本要执 行的代码,能 够拼接用户输
入的数据
SQL注入原理
项目的实施与验证
sql手工注入攻击。
STEP01:在客户端中访问卫星中心小 学模拟网站,点击址栏 http://192.168.67.135:99/common.asp?id=1后面输入字符 “’”,使得SQL查询语句出错。通过网站返回的报错信息可以 判断网站数据库的类型等,为注入攻击收集信息,如图所示
STEP07:通过上一步的猜测,发现该数据库存在admin_user表。 接着在链接http://192.168.67.135:99/common.asp?id=1 后 面加上and exists(select [字段] from admin_user)来猜解 admin_user表存在的字段,例如,加上and exists(select admin2 from admin_user),使链接的SQL查询语句变为select 列 from [表名] where[字段]=1 and exists(select admin2 from admin_user)。如果该SQL语句能被成功执行,即网页能 够正常显示,那么就说明存在admin2字段,否则说明该字段不 存在。下图分别为加上and exists(select admin2 from admin_user)注入失败与加上and exists(select admin from admin_user)以及and exists(select password from admin_user)注入成功的结果。
ASP中常见的80004005错误原因及解决

ASP中常见的80004005错误原因及解决
错误信息: Microsoft OLE DB Provider for ODBC Drivers error ’80004005’[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet databaseengine 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的文件监视程序可以在这个地方下载. 如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,还要检查一下 数据源文件(DSN)是否被别的程序标志成为正在使用中,这些别的程序一般是Visual InterDev,关闭任何 一个InterDev中的正打开和数据库连接的项目。 这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用本地路径 进行测试,因为如果对本地数据库使用UNC也可能出错。 还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
不能使用“;文件已在使用中Microsoft JET Database Engine

不能使⽤“;⽂件已在使⽤中Microsoft JET Database Engine错误类型:Microsoft JET Database Engine (0x80004005)不能使⽤ '';⽂件已在使⽤中。
错误原因:解决:iis⽤户对数据⽬录的权限不够,ldb⽂件⽆法⾃动⽣成解决办法:添加internet匿名⽤户对数据⽬录的写⼊权限 这⼀般是出现在⽹站程序访问数据库的时候。
出现该错误,有三种可能的原因:1.iis⽤户对数据⽬录的权限不够,ldb⽂件⽆法⾃动⽣成。
2.要连接的数据库已经被打开,占⽤!关闭数据库可解决问题!(可能别⼈正在下载你的数据库呢!)3.虚拟主机⽤户,空间已满,购买的空间⼤⼩已经⽤完。
解决办法:1.出现第⼀种情况,如果是购买的空间,请联系空间商处理;如果你就是空间商或服务器管理员,因为IIS⽤户对数据库⽬录没有读写权限,具体处理办法是:打开“我的电脑”,找到程序所在的⽬录(例如:D:\wwwroot\),右键点击⽬录,选择“安全”菜单项,选择“⽤户”,把everyone⽤户的读写权限都加上,确定以后,刷新浏览器页⾯,就可以正确使⽤系统了。
2.如果还是有问题,空间商或服务器管理员可以重新启动服务器。
这样数据库的占⽤就可以释放。
如果是虚拟主机空间,联系空间商处理。
请确认你是不是⾃⼰在上传或下载数据库导致数据库⽂件被占⽤。
3.空间不⾜的情况,联系空间商花钱增加⽹站空间或升级配置。
其它相关参考内容:----------------------[分析]1.解决:IIs⽤户对数据⽬录的权限不够,ldb⽂件⽆法⾃动⽣成,请添加internet匿名⽤户对数据⽬录的写⼊权限。
结果:还是不⾏2.注销windows账户,重新登陆。
结果:好⽤了,看来确实是某个进程在占⽤这个mdb⽂件。
备注:判断⼀个mdb⽂件是否被进程占⽤,就看同⽬录下是否有同名的ldb⽂件,若有,就是被占⽤。
当被释放时,ldb⽂件会消失。
ASP访问ACCESS出错提示简要解释

尝试使用下面的语法代替:
DSN=MyDSN;Database=Pubs;
如果 Global.asa 文件没有激发,请检查并确认它是在 IIS 4.0 的应用程序根下,(如果运行的是 IIS 3.0,则应在虚拟
根下,并且 Execute 复选框已经选中)。 此外,当 Windows NT 权限限制了对文件夹的访问时,程序设计中的一个错误
文件夹下,但也可以创建在其它文件夹下,如 Winnt。
您可以使用 Windows NT 文件监视器来检查访问文件失败的原因。 Windows NT 文件监视器可从以下 Web 站点上得到:
。
如果您使用的是该数据库的网络路径(UNC 或映像驱动器),请检查共享、文件及文件夹上的权限。
也可能会妨碍 Global.asa 文件被激发。详细信息请参见 Microsoft Knowledge Base 文章: Q173742 “BUG: 限制
Web 访问时,Global.asa 不被执行”
无法找到 DSN 名。 请检查并确认没有使用“用户”类型的 DSN。
如果使用的是文件 DSN 或系统 DSN,则尝试把连接字符串相应地改为 DSN=MySystemDSN 或 DBQ=MyFileDSN。 简化!
msg23qa27.shtml
80004005 及其它错误消息的疑难解答
---------------------------------------------
这篇文章中的信息适用于
Microsoft Data Access Components versions 1.5, 2.0, 2.1, 2.5
Microsoft JET Database Engine (0x80004005) 未指定的错误的完美解决

'''
j=j+1
rsXsl.movenext
Loop
response.write "共导入<font color='red'>" & j-1 & "</font>条记录
\..\..\aa.asp xx行
是什么问题呢?
此连接句有问题吗?
myConn_Xsl="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName &
";Extended Properties=Excel 8.0"
instrrev(file1,"\")-1))
if file1="" then
response.write "请选择您要导入的Excel表!<p></p>"
%>
<a href=javascript:history.back()>上一页</a>
Microsoft JET Database Engine (0x80004005)未指定的错误解决
1、系统可能没有注册msjetoledb40.dll,解决办法是
点 开始--->运行, 输入regsvr32 msjetoledb40.dll, 回车即可;
2、数据库所在文件夹权限
rsSql.open str_Sql,myConn,1,3
If Not rsSql.Eof Then
If not isNull(rsSql("maxId")) Then
ASP访问ACCESS出错提示简要解释2

ASP访问ACCESS出错提示简要解释在Asp页面中向记录集取长text型数据时,出现如下错误现象时:MicrosoftOLEDBProviderforODBCDrivers错误'80040e21'Errorsoccurred可有以下三种解决办法:(一)使用rs.opensql,conn,1,3方式打开记录集(二)将该列放在第一列取出,比如comment里存放有较长的text内容,取记录集内容的时候,先来个comment=rs("comment")把这个捣蛋的东西先取出来放到内存变量中,然后再操作其它的字段。
由于一般长text内容不会在第一个显示,因此一般都要取出来放到内存变量中。
(三)改为oledb方式连接数据库。
在此方式连接数据库时,不会出现该错误(起码我没有遇到过)。
在我的系统中,将现在的oledb连接方式改成odbc连接方式后,错误就马上出现了。
此错误怀疑是由于Asp向odbc返回的记录集取数据的机制有些问题造成。
建议采用第三种方法避免该错误。
提问:那么以下错误类型是什么意思Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'The request properties can not be supported by this ODBC Driver数据库字段长度不够出错信息Microsoft OLE DB Provider for ODBC Drivers error '80040e21'The request properties can not be supported by this ODBC Driver.//_ScriptLibrary/Recordset.ASP, line 466原因When the Recordset DTC has the cursor location property set to "2 - Use Server Side Cursors" (the default value), it cannot return multiple recordsets.当the Recordset DTC的游标设为2(服务器端游标,默认值)时,无法返回多个记录集RESOLUTIONUnder the Properties dialog box for the Recordset DTC, go to the Advanced tab and change the cursor location from "2 - Use Server-Side Cursor" to "3 - Use Client-Side Cursor."asp错误代码错误代码错误消息和扩展信息ASP0100 Out of memory(内存溢出)ASP0101 Unexpected error(函数返回e x c e p t i o n _ n a m e )ASP0102 Expecting string input(期待字符串输入)ASP0103 Expecting numeric input(期待数字量输入)ASP0104 Operating not allowed(操作不允许)ASP0105 Index out of range(数组下标溢出)ASP0106 Type Mismatch(数据类型不匹配)ASP0107 Stack Overflow(处理的数据量超过了允许的范围)ASP0115 Unexpected error(出现在外部对象中的可捕获的错误e x c e p t i o n _ n a m e,脚本不能继续运行)ASP0177 S e r v e r.CreateObject Failed(无效的P r o g I D )ASP0190 Unexpected error(当释放外部对象时,出现的可捕获的错误)ASP0191 Unexpected error(在外部对象的O n S t a r t P a g e方法中出现的可捕获的错误)ASP0192 Unexpected error(在外部对象的OnEndPage 方法中出现的可捕获的错误)ASP0193 OnStartPage Failed(在外部对象的O n S t a r t P a g e方法中出现错误) ASP0194 OnEndPage Failed(在外部对象的OnEndPage 方法中出现错误)ASP0240 Script Engine Exception(脚本引擎从o b j e c t _ n a m e抛出异常e x c e p t i o n _ n a m e )ASP0241 CreateObject Exception(object_name的C r e a t e O b j e c t方法所导致的异常e x c e p t i o n _ n a m e )ASP0242 Query OnStartPage Interface Exception(查询对象o b j e c t _ n a m e的O n S t a r t P a g e或O n E n d P a g e方法所导致的异常e x c e p t i o n _ n a m e )------------------ADO 错误代码除了在 Error 对象和 Errors 集合中说明的提供者错误之外,ADO 本身也将错误返回到运行时环境的异常处理机制之中。
几个Microsoft JET Database Engine 错误的解决方法

几个Microsoft JET Database Engine 错误的解决方法《关于ASP+Access程序出现“Microsoft JET Database Engine 错误'80004005'”的解决方法》这种问题的主要提示是“Microsoft JET Database Engine 错误'80004005'”,不同类型的下面还有不同的提示,咱就一一说起吧。
首先要说的是首次调试程序出现这种问题,如果是个一直运行正常的网站突然遇到这种问题那就掠过此段,直接看三。
一、路径问题:在保证源码没有任何问题的前提下,如果看到只是提示数据库路径不对的话是比较的好解决的。
检查下是不是自己为了安全而修改了数据库名称和路径但忘记在和程序配置文件和相关文件里也相应修改了。
查到了改一致就行了。
二、权限问题:这种问题大多会出现以下提示:-------------------------------------------------Microsoft JET Database Engine 错误'80004005'操作必须使用一个可更新的查询/..../xxxx.asp,行xxxx (配置文件路径)-------------------------------------------------遇到这种现象先得自己有服务器的管理员权限,给数据库文件的Internet来宾用户IUSR_XXX用户加上写的权限,有的程序则需要个相关的数据库都加上,有的则需要给数据库这个目录的加上。
同样的道理,如果网站的个别功能使用中出现这种问题,则需要给相应的目录加上写权限,一般用户涉及的主要有附件上传、头像上传等,如果是生成静态页面的则还有静态文件的目录。
管理员涉及的还有数据库备份、模板上传等。
还有一种可能就是服务器环境造成的权限问题,lyj0627遇到的就是这个问题,清理系统垃圾会清楚临时文件夹因为JET引擎在链接数据库的时候会在“%windir%/temp/”目录下创建临时文件,而IIS匿名帐号对“%windir%/temp/”目录操作权限不够,这就需要给\Windows\Temp添加IIS的Internet来宾(IUSR_XXX){XXX就是服务器的主机名}对“%windir%/temp”的读写权限。
解决Microsoft JET Database Engine (0x80040E09)不能更新。数据库或对象为只读。

解决数据库不能更新或数据库或对象为只读[图]
问:为什么访问网站时提示“Microsoft VBScript 运行时错误(0x800A0046) 没有权限或拒绝的权限”,或者出现“Microsoft JET Database Engine (0x80040E09) 不能更新。
数据库或对象为只读”。
原因:
ASP系统安装在NTFS分区,而ASP系统的目录没有给访问的用户读写权限引起的。
解决:
(假定ASP系统安装在H:\PowerEasy目录下,下面的图示以WINXP 为例,其它系统可以参照进行设置,Win2000、Win2003前三步不需要设置)
一、查看ASP系统是否安装在NTFS分区内,FAT32分区无些问题。
二、请进入文件管理器的文件夹选项
三、将“使用简单文件共享”前的勾选去掉
四、右键点击动易系统安装目录-共享和安全
五、添加组和用户名称
六、点击高级选项
七、查找用户或组
八、选择IUSR_*** (***为你的机器的名称)
九、点击确定
十、勾选动易目录对于IUSR_***的读写权限。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASP网页制作中出现Microsoft JET Database Engine(0x80004005)错误的解决方法(成功解决)
2010-06-08 04:23:48| 分类:默认分类 |字号订阅
2010.3.6 15:29
在给电脑安装IIS,安装成功,建立虚目录后,运行一个已经在别的机器上的正确的asp文件,就是不成功,提示:Microsoft JET Database Engine (0x80004005)未指定的错误,于是我又将这个文件放到另一台机器上运行,正常,一点问题没有,但在这台机器上就出问题。
这样就排除了asp文件问题了。
于是就想到,重装IIS。
重装后,还是一样。
最后发现是硬盘的分区有问题,那些安装好IIS 后就能asp程序的电脑是fat32分区,这台是ntfs分区。
需要给c:\windows\temp给予everyone所有权限。
这样再运行就正常了。
下面是Microsoft JET Database Engine (0x80004005)未指定的错误的所有解决方法,转自网络,放在这里希望能帮上大家解决问题。
1.查看数据库连接语句没有发现错误;
2.查看文件夹的权限已经全部给了everyone;
3.打开数据库的同时,系统会在临时文件夹 %SystemRoot%/temp/ 下创建临时文件,而 % SystemRoot%/temp/ 的权限不够
解决:%SystemRoot%/temp/ 的权限加上(IUSER_电脑名的读写)
Ps:其实在这里只要开放一个everyone加入,基本上就解决了,主要还是一个盘符类型的问题所引起的。
2、如果一般未指定的错误,还有个办法,先
其实只要很简单的几步。
(说真话,没多大的用,不过也可以试试):
开始。
运行。
regsvr32 jscript.dll
开始。
运行。
regsvr32 vbscript.dll
开始。
运行。
iisreset
Microsoft JET Database Engine (0x80004005)未指定的错误解决
1、系统可能没有注册msjetoledb40.dll,解决办法是
点开始--->运行,输入 regsvr32 msjetoledb40.dll,回车即可;
2、数据库所在文件夹权限
打开办法是:打开我的电脑,然后点菜单上的“文件夹选项”--->查看,然后把“使用简单文
件夹共享(推荐)”前面的钩去掉,然后点“确认”;接下来回到需要打开权限的文件夹(数据库存
放的文件夹),右键---> 属性--->安全,然后点“添加”--->"高级"--->立即查找--->然后在下面
的地方选择“everyone”--->确定--->点刚才加入的"everyone",然后在下面的大框编辑everyone
权限为完全控制,保存即可。
3、需要打开guest用户
打开方法:我的电脑--->控制面板--->管理工具---->计算机管理--->本地用户和组---用户---
找到"guest",双击,然后把弹出来的狂上的“帐户已停用”前的钩去掉,保存即可。
4、temp(临时文件夹)权限
打开办法:windows--->temp,单击右键选择-属性,你就会看到一个叫做“安全”的选项,添
加一个everyone,权限设置为完全控制,再将你正在使用windows的用户也设置为完全控制.(件夹权
限
打开办法是:打开我的电脑,然后点菜单上的“文件夹选项”--->查看,然后把“使用简单文
件夹共享(推荐)”前面的钩去掉,然后点“确认”;接下来回到需要打开权限的文件夹(数据库存
放的文件夹),右键---> 属性--->安全,然后点“添加”--->"高级"--->立即查找--->然后在下面
的地方选择“everyone”--->确定--->点刚才加入的"everyone",然后在下面的大框编辑everyone
权限为完全控制,保存即可。
(二):windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为:
1、Microsoft JET Database Engine (0x80040E09) 不能更新。
数据库或对象为只读
2、Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。
3、Microsoft JET Database Engine (0x80004005) 操作必须使用一个可更新的查询。
解决方法:
首先保证您的conn没有任何问题!!
1.把IIS里“目录安全性”中的“匿名访问和身份验证控制”取消,换成“集成 WINDOWS身份验证”即可。
2、在wwwroot文件夹上面点击右键-“属性”-取消“只读”
3、在您的数据库文件上文件夹上面点击右键-“属性”-“安全”-添加用户:“IUSR_计算机名”并开
放“IUSR_计算机名”的读取、写入权限
此方法是目前解决这个问题最好的办法,一般都可以解决问题
XP系统下可能点击右键看不到“安全”选项,请先打开“工具”-“文件夹选项”-“查看”-取消“使用简单文件共享(推荐)”然后即可在属性中找到“安全”选项
4、在wwwroot文件夹上面点击右键-“属性”-“web共享”-“共享文件夹”
5.在IIS虚拟目录上点击右键-“属性”-”配置“-”选项“-”启用父目录“
——————————————————————————————————————————————
一般来说,这个问题会发生在磁盘格式为NTFS的情况下,由于这个格式加入了安全性的控制,但是在XP的系统下文件夹的被默认为“默认共享”,在“属性”选项卡里是找不到“安全性”这项的。
因此应该更改这项设置。
方法叙述如下:
打开任意一个文件目录,点击“工具”->“文件夹选项”->“查看”,找到“使用简单文件共享(推荐)”这项,把前面的勾去掉。
在网站所在文件夹上单击右键,选择“属性”,这时就能找到“安全”的选项卡,添加一个用户Everyone,权限设为“完全控制”,这样任何人都对你的网站目录有读写权限了,问题得以解决。
ps:此解决方案是针对winxp 专业版的,对于home版,需要进入安全模式,才能够进行以上项目的修改
最终解决方法:把windows\temp 权限改了 everyone全控制权限哈哈
seo技术
关于博主
一个充满热情的有为青年 seo精英
Calendar
在日历中查看文章
声明
本博所有网友评论不代表本博立场,版权归其作者所有。
© Copyright 2009 by elong
Powered by ver:1.9.0.0, original powered by . | Theme by Spoony Sonny.
站长统计。