當ASP使用Access資料庫只能讀取無法維護的問題

摘要:當ASP使用Access資料庫只能讀取無法維護的問題

經常有網友問到....
使用ASP在維護資料庫的時候,會發生

  1. 資料庫是唯讀的
  2. 運作必須使用更新查詢

當遇到這樣的狀況時,可能有兩個原因
一是權限問題,另一則是Connection String中的Jet 版本設定不正確

權限問題:

ASP上的使用者在透過ADO存取資料庫的時候,是透過IUSER這個使用者來存取主機上的資源的,但是因為安全性的關係,所以IUSER通常權限都粉低,此時如果您的mdb存放的位置沒有開放給IUSER作資料庫的存取的話,那麼就可能造成這個問題

要解決這個問題的方式,就是1.檢查mdb的唯讀是否有取消2.將mdb資料夾分享給IUSER作存取

相關的動作操作可以參考以下這兩篇文章

http://www.blueshop.com.tw/article/show.asp?cde=ATL20050824185315P09
http://www.blueshop.com.tw/article/show.asp?cde=ATL20050824190443EUL

Connection String中的Jet 版本設定不正確:

如果確定了【權限問題】處理了,卻還是無法維護,那麼就要檢查一下您的Connection String是否有做正確的設定。如果您的主機上對於Jet的存取版本有兩個以上(Jet3.5→Access97,Jet4.0→Access2000)
那麼如果您沒有正確的指定用哪個版本來存取,就有可能會造成無法維護的狀況

要解決這個問題,首先要知道您的mdb是屬於哪一個版本,接著就是設定正確的Connection String了

Access97 ConStr97="Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Server.MapPath("db/abc.mdb")
Access2000以後 ConStr2K="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/abc.mdb") & ";Persist Security Info=False"
 

以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat