Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e21'
2024-05-08 13:48:16
供稿:網友
 
系統環境 
Windows server2003+IIS6+NTFS 
ASP+Access 
錯誤信息 
Microsoft JET Database Engine 錯誤 '80004005' 未指定的錯誤 
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x474 Thread 0x290 DBC 0x79d024 Jet'. 
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005' 
[Microsoft][ODBC Microsoft Access Driver]常見錯誤 不能打開注冊表關鍵字 'Temporary (volatile) Jet DSN for process 0x1f0 Thread 0xd44 DBC 0x203e024 Jet'。 
Provider 錯誤 '80004005' 未指定的錯誤 
Microsoft JET Database Engine 錯誤 '80004005' 操作必須使用一個可更新的查詢。 
故障原因 
此類錯誤一般出現于文件系統為NTFS格式中,是IIS匿名帳號(IUSR_計算機名)對相關文件、文件夾操作權限不足引起的。 
一、存放數據庫文件夾對IIS匿名帳號沒有寫入、修改權限,錯誤表現為無法對數據庫進行更新、寫入 
二、系統臨時文件夾目錄對IIS匿名帳號沒有寫入、修改權限,錯誤表現為訪問服務器上任何采用Microsoft JET Database Engine 鏈接Access類數據庫的文件都是出錯。正常情況下是不會出現這個錯誤的,當使用某些系統垃圾清理優化工具、或其它一些因素可能會導致這個目錄權限發生改變。所以請慎重使用此類工具。 
解決辦法 
一、檢查存放Microsoft Access數據庫文件的文件夾是否有對IIS匿名帳號有寫入權限,如果沒有,請賦于寫入權限,特別是當錯誤信息為(Microsoft JET Database Engine 錯誤 '80004005' 操作必須使用一個可更新的查詢。)時。 
二、JET引擎在鏈接數據庫的時候會在%windir%/temp/目錄下創建臨時文件,而IIS匿名帳號對%windir%/temp/目錄操作權限不夠,添加IIS匿名帳號(IUSR_計算機名)對%windir%/temp/的讀寫權限即可。 
其它一些未指定的錯誤,可以嘗試重新注冊ASP腳本解釋鏈接庫文件。 
依順序運行以下命令: 
1.regsvr32 jscript.dll 
2.regsvr32 vbscript.dll 
3.iisreset 
參考案例二: 
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e21' 
多步 OLE DB 操作產生錯誤。如果可能,請檢查每個 OLE DB 狀態值。沒有工作被完成。 
當服務器嘗試處理包含"更新記錄"或"插入記錄"服務器行為的頁時,會出現此錯誤。數據庫無法處理該服務器行為嘗試執行的更新或插入操作。 
可能的原因和解決方案如下: 
該服務器行為正嘗試更新數據庫表的自動編號字段或者嘗試在自動編號字段中插入記錄。由于自動編號域由數據庫系統自動填充,因此任何從外部用值填充這些域的嘗試都會失敗。 
服務器行為正在更新或插入的數據對于該數據庫字段而言是錯誤的類型,例如將日期插入布爾型(是/否)字段,將字符串插入數值字段,或者將格式不正確的字符串插入"日期/時間"字段。