Microsoft OLE DB Provider for ODBC Drivers 错误 ''80004005''
[Microsoft][ODBC Microsoft Access Driver]操作必须使用一个可更新的查询。
1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写的权限.在IIS里面,有一个设置,就是Web匿名访问用户,也就是大家熟悉的IUSR_。给你的Access数据库文件增加 IUSR_ 的改写权限。
1) 这就是我们要用程序去操作的Access数据库文件
2) 右键 --> 属性:此文件的“安全”属性
3) 增加用户 IUSR_
4) 设置 IUSR_ 对Access数据库文件的访问权限
这是设置好了的权限注意只给了 IUSR_ 的读、写权限哦。不要给 Everyone 权限,而且还要给执行(Execute)权限,这样容易被人家上传了ASP木马,然后执行,你的系统最高级的权限就被入侵者获取了。
2、原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 ''3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close
注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。
5、当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS2000)中的查询时,在执行这个查询是会出现该错误。
6、ACCESS数据库无法更新问题:
一般在Winxp与windows2003server下,文件目录的只读属性会影响网站程序写数据库操作,即使用户已经去掉其只读属性,但是之后只读又失效,导致许多网站不能正常运行。事实上,网站程序目录读写权限才是影响其运行的根本原因。所以只读属性能否去掉并不重要,只需要把相应目录赋予读写权限即可。1)、在通常情况下,Web应用程序只读属性并不影响Web系统运行。在需要写入、更新数据库时,Web程序操作数据库因权限不够会提示"操作必须使用一个可更新的查询。"这种情况可能会在NTFS分区环境下出现,FTA32一般分区不会出现。将Web应用程序放在FTA32分区下运行时,不会出现因权限等问题而导致系统不能正常运行的情况,但是其安全性不如NTFS好。因此,一般网站软件可在FTA32下测试运行,单位正式网站软件建议放置在NTFS下运行。
2)、现以XP环境下,NTFS格式为例。进入网站根目录,工具—>文件夹选项—>查看,将“使用简单文件共享”前的勾选去掉。
3)、网站根目录赋予Everyone完全控制、读写权限。
出错举例:
Microsoft JET DatabaseEngine (0x80004005)
操作必须使用一个可更新的查询。
/LeadBBS/inc/Board_Popfun.asp,第 569 行
需要权限:服务器管理员,否则联系服务器管理员进行
示例操作系统:Windows 2000 Server
这个错误提示
因为程序是在别的机器上完成的,应该是没有错误的,根据提示,好像是“IUSR_机器名”这个用户的权限不够,“IUSR_机器名”这个用户是用来匿名访问网站的用户,一般来说在本机调试的时候,访问自己硬盘的时候用的就是这个用户。
那就重新设定一下目录的权限就可以了,不过,当我打开asp程序所在目录的属性时,却没找到安全这个选项卡,???奇怪了!哦,我用的是winxp系统,找找看吧!肯定被藏起来了~~
“我的电脑”-“工具”-“文件夹选项”-“查看”-“使用简单文件共享(推荐)”。靠,居然还推荐,好吧 去掉“使用简单文件共享(推荐)”前面的对号,确定,在看看~~嘿嘿 安全 这个出来了吧~
看看有没有Internet来宾帐户(名字格式为“IUSR_机器名”),果然没有!添加!!!???xp里面还需要自己手动添加,我记得原来win2k里面选一下就可以了,好吧,自己动手,丰衣足食!然后将写入的权限赋予这个用户,确定。