access 不能打開注冊表關(guān)鍵字 80004005
錯誤信息如下:
----------------------------------
microsoft ole db provider for odbc drivers 錯誤 ''''80004005''''
[microsoft][odbc microsoft access driver]常見錯誤 不能打開注冊表關(guān)鍵字 ''''temporary (volatile) jet dsn for process 0x728 thread 0x854 dbc 0x276fb44 jet''''。
----------------------------------
下面幾個可能原因:
1。微軟已經(jīng)不更新odbc,需要改用jet的方式連接access數(shù)據(jù)庫文件;
2。系統(tǒng)目錄的權(quán)限發(fā)生的變更。
也有老帖子說什么原因是:“access數(shù)據(jù)庫文件是access97版本的”,這個無須考慮,我用的是access2000數(shù)據(jù)庫。
對于第一個原因,原來的連接字串如下:
--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'''' 未指定的錯誤
----------------------------------
最后檢查第二個原因:系統(tǒng)目錄權(quán)限不足。經(jīng)詢問,原來由于出于安全的考慮一同事把該服務(wù)器的winnt目錄設(shè)置為 administrators、system “完全控制”,users 只讀。
但是,按道理,這樣的權(quán)限設(shè)置,odbc的驅(qū)動程序處于 winntsystem32odbcjt32.dll 這個也是可讀的,難道是因為缺少“執(zhí)行”權(quán)限?
我把 winntsystem32目錄下所有以odbc開頭的dll文件全部授予“執(zhí)行”權(quán)限,發(fā)現(xiàn)還是一樣的錯誤信息。跟著我索性把整個 system32 目錄設(shè)成 everyone 可執(zhí)行,可是一測試依然不行。
難道是還有其他文件被odbc或jet調(diào)用但又不在這個system32目錄下且又沒有得到充分授權(quán)而導(dǎo)致失敗?
正在想的時候,驀然瞥見 winnttemp 目錄。嘿,我把 temp 目錄設(shè)置成 everyone 可“寫入”看看。
一測試,嘿,成了。使用odbc連接方式的程序,成功的讀取更新access數(shù)據(jù)庫中的記錄。
更多信息請查看IT技術(shù)專欄