a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Access > 正文

探索Access數據庫最佳NTFS權限設置(1)

2024-09-07 18:57:15
字體:
來源:轉載
供稿:網友

我們知道ASP.NET中使用ADO.NET訪問數據庫,通過OleDb的連接可以訪問Access數據庫(我們非常常用的低端數據庫之一)。本文討論了ASP.NET中可能看到的若干錯誤提示,從中可以發現Access 2000和Access XP創建的數據庫文件在訪問出現錯誤時會給出不太相同的錯誤提示。另一個要點是,希望通過此文,使大家對ASP.NET中Access數據庫文件的NTFS權限設置得到新的認識。

(一)實驗過程

為了敘述方便,舉個具體例子做實驗:應用程序為/test,數據庫存放在D:wwwroot estdatadb1.mdb,我們已經知道在ASP.NET中是以一個叫做ASPNET虛擬用戶的身份訪問數據庫的,我們需要給這個賬戶以特定的NTFS權限才能使ASP.NET程序正常運行。

為了得到最嚴格的NTFS權限設置,實驗開始時我們給程序最低的NTFS權限:

a)D:wwwroot estdata文件夾的給用戶ASPNET以如下權限:

                 允許  拒絕
完全控制          □    □
修改              □    □
讀取及運行        √    □
列出文件夾目錄    √    □
讀取              √    □
寫入              □    □


b)D:wwwroot estdatadb1.mdb文件本身給用戶ASPNET以如下權限:

√ 允許將來自父系的可繼承權限傳播給該對象


1.1對于某個只包含有“SELECT”命令的aspx程序,上述權限設置運行時無障礙,即:上述權限已經滿足這類程序的運行了。

1.2對于包含有“UPDATE”“INSERT”“UPDATE”等命令的aspx程序

(a)如果db1.mdb是Access 2000創建的數據庫,出現如下錯誤:

“/test”應用程序中的服務器錯誤


Microsoft Jet數據庫引擎打不開文件'D:wwwroot estdata'。它已經被別的用戶以獨占方式打開,或沒有查看數據的權限。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息:System.Data.OleDb.OleDbException:Microsoft Jet數據庫引擎打不開文件'D:wwwroot estdata'。它已經被別的用戶以獨占方式打開,或沒有查看數據的權限。


(b)如果db1.mdb是Access XP創建的數據庫,出現如下錯誤:


“/test”應用程序中的服務器錯誤


操作必須使用一個可更新的查詢。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息:System.Data.OleDb.OleDbException:操作必須使用一個可更新的查詢。


(c)原因初步分析:因為包含有“UPDATE”“INSERT”“UPDATE”等命令,需要對數據庫文件本身進行寫入操作,所以上述權限不能滿足此需求,我們需要進一步放開權限。

a)D:wwwroot estdata文件夾不變

b)D:wwwroot estdatadb1.mdb文件本身給用戶ASPNET以如下權限:

                 允許  拒絕
完全控制          □    □
修改              □    □
讀取及運行        √    □
列出文件夾目錄    √    □
讀取              √    □
寫入              √    □


1.3放開權限后繼續實驗

(a)如果db1.mdb是Access 2000創建的數據庫,出現如下錯誤:

“/test”應用程序中的服務器錯誤


不能鎖定文件。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息:System.Data.OleDb.OleDbException:不能鎖定文件。


(b)如果db1.mdb是Access XP創建的數據庫,沒有出現錯誤。

(c)原因初步分析:我們發現在打開Access數據庫時,同時會在所在目錄生成一個同名的*.ldb文件,這是一個Access的鎖定標記。鑒于此,我們猜測,用戶ASPNET訪問Access數據庫時,也需要生成一個鎖定標記,而該目錄沒有允許其寫入,因此出錯。至于Access XP創建的數據庫為什么沒有這個錯誤,原因還不得而知。

我們進一步放開權限:

a)D:wwwroot estdata文件夾給用戶ASPNET以如下權限:

                 允許  拒絕
完全控制          □    □
修改              □    □
讀取及運行        √    □
列出文件夾目錄    √    □
讀取              √    □
寫入              √    □


b)D:wwwroot estdatadb1.mdb文件本身給用戶ASPNET以如下權限:

√ 允許將來自父系的可繼承權限傳播給該對象


1.4 繼續實驗,發現錯誤已解決,那么上面這個權限就是我們需要放開的“最低權限”。

(a)如果db1.mdb是Access 2000創建的數據庫,我們會發現一個小問題:生成的*.ldb文件不會自己刪除,訪問后該文件依然存在,但這個問題不會影響ASP.NET的正常運行。

(b)如果db1.mdb是Access XP創建的數據庫,沒有出現上面類似問題。

(c)原因初步分析:我們僅僅是給了ASPNET以寫入文件夾的權限,沒有給它修改的權限,所以文件一旦寫入,便無法修改其內容,*.ldb也就刪除不掉了。

如果非要解決這個問題,進一步放開權限為:

a)D:wwwroot estdata文件夾給用戶ASPNET以如下權限:

                 允許  拒絕
完全控制          □    □
修改              √    □
讀取及運行        √    □
列出文件夾目錄    √    □
讀取              √    □
寫入              √    □


b)D:wwwroot estdatadb1.mdb文件本身給用戶ASPNET以如下權限:

√ 允許將來自父系的可繼承權限傳播給該對象


1.5附帶實驗另一種情形:我們把db1.mdb在Access打開編輯,同時訪問ASP.NET。

(a)如果db1.mdb是Access 2000創建的數據庫,我們發現并沒有出現什么問題。

(b)如果db1.mdb是Access XP創建的數據庫,出現如下錯誤:

“/zhao”應用程序中的服務器錯誤。


不能使用'';文件已在使用中。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息:System.Data.OleDb.OleDbException:不能使用'';文件已在使用中。


(c)原因初步分析:Access數據庫是單用戶單線程的數據庫,我們在Access里面打開編輯數據庫文件時其實是以當前Windows用戶(比如Administrator)身份打開數據庫,而ASP.NET默認使用的是ASPNET虛擬用戶(隸屬于Users組),級別低于Administrator,無法和Administrator“搶奪”權限,所以出現沖突錯誤。至于Access 2000忽略這個問題的情形我們也不必做討論了,可能是Access 2000沒有考慮那么多因素吧。

1.6再附帶一種情形:將db1.mdb的屬性改為“只讀”,無論是Access 2000還是Access XP都將分別出現與1.2中各自的錯誤相同的錯誤提示。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产婷婷国产香蕉 | www,久久久| 免费在线h | 黄色av电影在线 | 天天干天天曰天天操 | 欧美成人免费在线视频 | 欧美在线影院 | 可以免费看黄视频的网站 | 国产精品三级在线 | 草草久久久 | 九色在线观看 | 日韩视频在线观看不卡 | 亚洲特级| 91性高湖久久久久久久久_久久99 | 国产视频久久久久 | 在线区 | 日韩欧美中文字幕在线视频 | 婷婷丁香五| 日韩精品视频在线播放 | 秋霞成人 | 日韩一区二区在线观看 | 国产一级免费视频 | 国产精品99久久久久久久vr | 国产91亚洲精品久久久 | 免费视频一区 | 成人高清在线 | 成av人在线 | 日韩午夜av| 99精品99| 国产 日韩 欧美 中文 在线播放 | 我和我的祖国电影在线观看免费版高清 | 久久久久久91 | 国产精品一区二区三区在线 | 中文 日韩 欧美 | 天天操天天碰 | 久草久草久草 | 日本黄色一区 | 日本wwwwww | 中文字幕自拍偷拍 | 8x国产精品视频一区二区 | 日本一区二区三区四区 |