说明:本文章为自己从别的文章那里修改的,若有不明白之处,可以参考原文,原文地址有二个,大家参考
1:http://oeo1oeo1.blog.163.com/blog/static/1703694142010112154739553/
2:http://hi.baidu.com/%CD%C3%CD%C3%B5%C4%B1%A1%BA%C9%D2%B6/blog/item/130b7b8b3be5d2779e2fb42c.html
首先,说一下我的整体配置:XP系统,C区为FAT32外,其他区全部为NTFS格式;
IIS5.1,ASP+Access系列的网站
要解决这个问题,需要解决两部分的权限:
一:ODBC权限:
解决的是不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xddc Thread 0x818 DBC 0x10ce7a4 Jet'解决办法
A 启动“注册表编辑器”(开始、运行、Regedt32)。
B 在注册表中选择下面的项:HKEY_LOCAL_MACHINE\SOFTWARE\ODBC
C 在安全菜单上,单击权限。为访问Web页的帐户键入所需的权限。
注意:这里的权限要看你本机器目前的用户,一般大家电脑用户均为Administrator,因此把这个和Everyone添加上,权限设置上
D 退出“注册表编辑器”。
二:站点文件夹权限
解决的是刷新不成功、提示为:“Provider (0x80004005) 未指定的错误”的问题
1,打开浏览器的时候,最好把相应的Access关闭。
2,你可能需要检查一下你的网站文件夹是否有Everyone的这个权限。
注意:
1,将Fat32格式的转换成NTFS的形式.
2,找到“文件夹选项->查看->简单文件共享”项,取消这项。这样才可以在右击文件夹属性的时候正常看到安全标签页。
3.最后赋everyone权限,如果你是在本地测试的话,可以将所有权限都赋给Everyone。
例:要将驱动器 E 上的卷转换为 NTFS 并且显示所有消息,请键入:convert e:/fs:ntfs /v
三:以上两个步骤设置完后将电脑重启即可
关于第二步的其他方法,还有许多种,从网上找的,我没有试验
1.解决方案:
找到产生连接数据库的那段代码为 MM_XXXXXX_STRING 付值的语句, 添加UID=;PWD=
(此段代码一般是在站点的CONNECTIONS文件下)
例如:
错误前:MM_XXXXX_STRING = "dsn=YYYY;"
改正后:MM_XXXX_STRING = "dsn=YYYY;UID=;PWD=;"
2.解决方案:
access数据库开始可以连接成功,但提交数据出现“Provider (0x80004005)未指定的错误”,数据库连接出错,刷新页面无效。
原数据库连接语句为:
Dim conn
conn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=e:\web\opwer\表名.mdb"
改为:
Dim conn
conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\web\opwer\表名.mdb"
问题解决。
注意:在本机上,用绝对路径,上传到服务器请用相对路径:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("表名.mdb")
3,解决方案:
<%
'不规范的写法如下,有时能正常运行,有时不能。
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/xixi.mdb")
%>
<%
'正确写法如下
dbpath=server.mappath("data/xixi.mdb")
set conn=server.createobject("adodb.connection")
conn.open "provider=microsoft.jet.oledb.4.0;data source=" & dbpath
%>
把conn.asp文件改为上述正确写法后,即运行正常。可第二天,又不正常了。还是提示出错。。
继续了以下步骤后才可以访问了
.把IIS里“目录安全性”中的“匿名访问和身份验证控制”取消,换成“集成 WINDOWS身份验证”即可。
不过在本机访问的时候,先提示要输入本机的用户名和密码,反正是在本机运行的,这样也可以。只要能正常运行。
网上很多资料都说是没有开启数据库目录的写权限,也有人说是没有开启系统目录下temp的写权限,我不知道这是否是一个误区,毕竟我的是XP系统,XP的解决方法不一定适用于其他操作系统,所以还是转一下别人的帖子,以供参考。
转帖中是win2000 server +asp+access(以下是server系统的)
解决方法一
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'常见错误 不能打开注册表关键字错误描述:
----------------------------------
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft] [ODBC Microsoft Access Driver]常见错误 不能打开注册表关键 字 'Temporary (volatile) Jet DSN for process 0x728 Thread 0x854 DBC 0x276fb44 Jet'。
----------------------------------
连接方式:
--ODBC连接方式------------------------
mdbpath=server.MapPath("my.mdb.asp")
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd="
-------------------------------------
解决方法:
打开winnt\temp目录 将其安全选项内增加 everyone 用户 权限为完全控制 然后重启计算机如果不重启。会出另外一个错!!!
操作系统 win2000 server sp4/sp3
网上查找到的解决方法二:
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虚拟目录上点击右键-“属性”-”配置“-”选项“-”启用父目录“
网上查找到的方法三:
解决办法:
在Dos命令行状态下分别输入下列命令并按回车(Enter)键:
regsvr32 jscript.dll (命令功能:修复Java动态链接库)
regsvr32 vbscript.dll (命令功能:修复VB动态链接库)
然后从新启动,即可恢复