国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > access > access不能打开注册表关键字错误处理方法(80004005错误)

access不能打开注册表关键字错误处理方法(80004005错误)

来源:程序员人生   发布时间:2013-10-11 17:05:54 阅读次数:3467次

  错误信息如下

Microsoft OLE DB Provider for ODBC Drivers 错误
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 Temporary (volatile) Jet DSN for process x Thread x DBC xfb Jet

  下面几个可能原因
微软已经不更新ODBC需要改用JET的方式连接ACCESS数据库文件
系统目录的权限发生的变更
也有老帖子说什么原因是ACCESS数据库文件是ACCESS版本的这个无须考虑我用的是ACCESS数据库

  对于第一个原因原来的连接字串如下
ODBC连接方式
mdbpath=serverMapPath(mymdbasp)
CnnStr = DBQ= & mdbpath & ;DRIVER={Microsoft Access Driver (*mdb)};uid=admin;pwd=

  改用JET连接后连接字串为
JET连接方式
CnnStr = Provider=MicrosoftJetOLEDB;User Id=admin;Data Source=& mdbpath & ;Password=luntanbbs

  测试过后无效虽然提示的错误信息有点不同

Microsoft JET Database Engine 错误 未指定的错误

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

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

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生