程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 關於ASP訪問ACCESS數據的錯誤的探討

關於ASP訪問ACCESS數據的錯誤的探討

編輯:關於Access數據庫
前天,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的錯誤又怎麼回事呢?

  有時間再搞搞它吧。如果你知道,請給我發個回復哦。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved