Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

ASP 無法更新 Access 資料庫?XP/IIS 權限陷阱完整破解指南

編輯:關於伺服器

現象:代碼無誤,卻拋出「資料庫唯讀」或「查詢不可更新」

經典錯誤訊息:

  • `Microsoft JET Database Engine (0x80040E09) 不能更新。資料庫或物件為唯讀`
  • `Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 作業必須使用一個可更新的查詢。`
  • `Microsoft JET Database Engine (0x80004005) 作業必須使用一個可更新的查詢。`

環境:Windows XP + IIS 5.0。根因非代碼邏輯,純屬 NTFS 權限配置缺失。

三大解決方案(按推薦順序)

方案 A:移除網站根目錄「唯讀」屬性(最簡單,偶爾有效)

右鍵 `wwwroot` → 屬性 → 取消勾選「唯讀」。適用於單純屬性遺留導致的鎖定。

方案 B:授予 `IUSR_機器名` 對資料庫檔案/目錄的「讀取/寫入」權限(最標準,解決 95% 情況)

  1. 右鍵資料庫所在目錄 → 屬性 → 安全性 索引標籤(若不見,請先:資料夾選項 → 檢視 → 取消「使用簡單檔案共用」)
  2. 新增使用者 `IUSR_機器名`(或 `IIS_IUSRS` 視 IIS 版本)
  3. 授予 讀取 & 寫入(含修改)權限,確保 ASP 能建立/更新 `.ldb` 鎖定檔。

方案 C:啟用 `wwwroot` 目錄的「Web 共用」

右鍵 `wwwroot` → 屬性 → Web 共用 → 共用此資料夾。輔助 IIS 正確識別應用程式邊界。

XP 特有坑點與避雷指南

  • 簡單檔案共用預設開啟 → 導致安全性索引標籤消失,必須關閉才能精細授權。
  • 建議:若以 XP 作為開發/測試主機,請做好「權限折騰」心理準備;正式環境強烈建議升級至 Windows Server 2003/2008+,權限模型更成熟、攻擊面更小。
  • 遇到詭異 500/401/資料庫錯誤,**第一反應應檢查 XP 權限**,而非反覆檢視代碼。

總結

ASP+Access 權限鐵律:IIS 匿名帳戶 (IUSR_*) 必須擁有資料庫檔案及其所在目錄的修改權限。按方案 B 標準化部署,一次到位,杜絕「明明代碼對卻更新不了」的靈異事件。

Copyright © Windows教程網 All Rights Reserved