50分在线等 一个asp的问题

时间:2023-01-29 12:19:13
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x4ac Thread 0x758 DBC 0x124342c Jet'。
这个错误是什么意思

9 个解决方案

#1


你用的哪种链接方式?
用这种链接方式试试
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("#.mdb")

#2


应该是权限问题吧
你找到数据库所在目录,也可以是上层目录,然后设置文件夹 安全 属性,最简单的是把everyone的权限设置成完全即可

#3


你的数据库连接方式有误

#4


个人意见,仅供参考

试试这个

<% 
dim conn,db 
dim connstr 
db="../data/jslm.mdb" '数据库文件位置 
on error resume next 
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 
set conn=server.createobject("ADODB.CONNECTION") 
if err then 
err.clear 
else 
conn.open connstr 
end if 
sub CloseConn() 
conn.close 
set conn=nothing 
end sub 
%> 

#5


<!--- The site is designed by windsfly.cn,Inc 04/06/2007 ---> 
<%
'********************************************************
'程序名称:迅风在线电脑报修系统
'程序设计:孙峰
'功    能:适合电脑故障修理行业
'日    期:2007/4/6
'开发平台:ASP+ACCESS,DIV+CSS
'官方网站:http://www.windsfly.cn(迅风工作室)
'联系方式:e-mail:sf223cn@yahoo.com.cn
'          QQ:105857855 MSN:sf0223cn@hotmail.com
'********************************************************
  on error resume next
  
  dim strconn,conn,data
  data="数据库名.mdb"
  set conn=Server.CreateObject("ADODB.Connection")
  strconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath(data)
  conn.open strconn
  
  if err then
     err.clear
 set conn=nothing
 Response.Write("数据库连接出错,请检查连接字串!")
 Response.End()
  end if
%>

我写的,没问题,用这个吧~

#6


晕了
忘了把上面的文字去掉了~

#7


前天,N久以前做的一个ACCESS数据库的程序出错了,程序都没有改动过,之前好好的,突然就不行了。
错误信息如下: 
---------------------------------- 
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'。 
---------------------------------- 

由于最近一台服务器被人攻击垮掉了正在重装,没时间理这个问题。后来在朋友(是该程序的用户哦)的多翻催促下,决定搞定它。 
一开始,还真不摸不清是怎么回事。在GOOGLE上搜了很多,众说纷纭,过滤去一堆没有结果的垃圾信息,得到下面几个可能原因:
 1。微软已经不更新ODBC,需要改用JET的方式连接ACCESS数据库文件; 
2。系统目录的权限发生的变更。 
也有老帖子说什么原因是:“ACCESS数据库文件是ACCESS97版本的”,这个无须考虑,我用的是ACCESS2000数据库。 

对于第一个原因,原来的连接字串如下: 
--ODBC连接方式------------------------ 
mdbpath=server.MapPath("my.mdb.asp") 
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd=" 
------------------------------------- 

改用JET连接后连接字串为: 
---JET连接方式--------------------- 
CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source="& mdbpath &" ';Password=luntanbbs" 
------------------------------------- 

测试过后无效,虽然提示的错误信息有点不同: 
---------------------------------- 
Microsoft JET Database Engine 错误 '80004005' 未指定的错误 
---------------------------------- 

最后检查第二个原因:系统目录权限不足。经询问,原来由于出于安全的考虑一同事把该服务器的WINNT目录设置为 Administrators、system “完全控制”,users 只读。 
但是,按道理,这样的权限设置,ODBC的驱动程序处于 winnt\system32\odbcjt32.dll 这个也是可读的,难道是因为缺少“执行”权限? 
我把 winnt\system32\目录下所有以odbc开头的DLL文件全部授予“执行”权限,发现还是一样的错误信息。跟着我索性把整个 system32 目录设成 everyone 可执行,可是一测试依然不行。 
难道是还有其他文件被ODBC或JET调用但又不在这个system32目录下且又没有得到充分授权而导致失败? 
正在想的时候,蓦然瞥见 winnt\temp 目录。嘿,我把 temp 目录设置成 everyone 可“写入”看看。 

一测试,嘿,成了。使用ODBC连接方式的程序,成功的读取更新ACCESS数据库中的记录。 

有意思的是,使用JET连接方式的程序,却报另一个错误: 
------------------------------------------- 
Microsoft JET Database Engine 错误 '80040e4d' 无法启动应用程序。
工作组信息文件丢失,或是已被其它用户以独占方式打开。 
------------------------------------------- 

嘿嘿,不知道这个JET的错误又怎么回事呢?
有时间再搞搞它吧。如果你知道,请给我发个回复哦。 :-D 

网上看到的,希望对你有帮助

#8


数据库连接有问题呀

#9


谢谢啊 问题解决了已经

#1


你用的哪种链接方式?
用这种链接方式试试
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("#.mdb")

#2


应该是权限问题吧
你找到数据库所在目录,也可以是上层目录,然后设置文件夹 安全 属性,最简单的是把everyone的权限设置成完全即可

#3


你的数据库连接方式有误

#4


个人意见,仅供参考

试试这个

<% 
dim conn,db 
dim connstr 
db="../data/jslm.mdb" '数据库文件位置 
on error resume next 
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 
set conn=server.createobject("ADODB.CONNECTION") 
if err then 
err.clear 
else 
conn.open connstr 
end if 
sub CloseConn() 
conn.close 
set conn=nothing 
end sub 
%> 

#5


<!--- The site is designed by windsfly.cn,Inc 04/06/2007 ---> 
<%
'********************************************************
'程序名称:迅风在线电脑报修系统
'程序设计:孙峰
'功    能:适合电脑故障修理行业
'日    期:2007/4/6
'开发平台:ASP+ACCESS,DIV+CSS
'官方网站:http://www.windsfly.cn(迅风工作室)
'联系方式:e-mail:sf223cn@yahoo.com.cn
'          QQ:105857855 MSN:sf0223cn@hotmail.com
'********************************************************
  on error resume next
  
  dim strconn,conn,data
  data="数据库名.mdb"
  set conn=Server.CreateObject("ADODB.Connection")
  strconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath(data)
  conn.open strconn
  
  if err then
     err.clear
 set conn=nothing
 Response.Write("数据库连接出错,请检查连接字串!")
 Response.End()
  end if
%>

我写的,没问题,用这个吧~

#6


晕了
忘了把上面的文字去掉了~

#7


前天,N久以前做的一个ACCESS数据库的程序出错了,程序都没有改动过,之前好好的,突然就不行了。
错误信息如下: 
---------------------------------- 
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'。 
---------------------------------- 

由于最近一台服务器被人攻击垮掉了正在重装,没时间理这个问题。后来在朋友(是该程序的用户哦)的多翻催促下,决定搞定它。 
一开始,还真不摸不清是怎么回事。在GOOGLE上搜了很多,众说纷纭,过滤去一堆没有结果的垃圾信息,得到下面几个可能原因:
 1。微软已经不更新ODBC,需要改用JET的方式连接ACCESS数据库文件; 
2。系统目录的权限发生的变更。 
也有老帖子说什么原因是:“ACCESS数据库文件是ACCESS97版本的”,这个无须考虑,我用的是ACCESS2000数据库。 

对于第一个原因,原来的连接字串如下: 
--ODBC连接方式------------------------ 
mdbpath=server.MapPath("my.mdb.asp") 
CnnStr = "DBQ=" & mdbpath & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=admin;pwd=" 
------------------------------------- 

改用JET连接后连接字串为: 
---JET连接方式--------------------- 
CnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source="& mdbpath &" ';Password=luntanbbs" 
------------------------------------- 

测试过后无效,虽然提示的错误信息有点不同: 
---------------------------------- 
Microsoft JET Database Engine 错误 '80004005' 未指定的错误 
---------------------------------- 

最后检查第二个原因:系统目录权限不足。经询问,原来由于出于安全的考虑一同事把该服务器的WINNT目录设置为 Administrators、system “完全控制”,users 只读。 
但是,按道理,这样的权限设置,ODBC的驱动程序处于 winnt\system32\odbcjt32.dll 这个也是可读的,难道是因为缺少“执行”权限? 
我把 winnt\system32\目录下所有以odbc开头的DLL文件全部授予“执行”权限,发现还是一样的错误信息。跟着我索性把整个 system32 目录设成 everyone 可执行,可是一测试依然不行。 
难道是还有其他文件被ODBC或JET调用但又不在这个system32目录下且又没有得到充分授权而导致失败? 
正在想的时候,蓦然瞥见 winnt\temp 目录。嘿,我把 temp 目录设置成 everyone 可“写入”看看。 

一测试,嘿,成了。使用ODBC连接方式的程序,成功的读取更新ACCESS数据库中的记录。 

有意思的是,使用JET连接方式的程序,却报另一个错误: 
------------------------------------------- 
Microsoft JET Database Engine 错误 '80040e4d' 无法启动应用程序。
工作组信息文件丢失,或是已被其它用户以独占方式打开。 
------------------------------------------- 

嘿嘿,不知道这个JET的错误又怎么回事呢?
有时间再搞搞它吧。如果你知道,请给我发个回复哦。 :-D 

网上看到的,希望对你有帮助

#8


数据库连接有问题呀

#9


谢谢啊 问题解决了已经