2012年6月29日 星期五

ASP網頁+ACCESS資料庫 出現錯誤訊息 Microsoft JET Database Engine (0x80004005)

最近ASP網頁+ACCESS資料庫的網頁,突然出現下列錯誤訊息!

-------------------------------------------------------------------
請嘗試執行下列動作:

按一下 重新整理按鈕,或稍後再試。
    開啟 XXXXX 首頁,然後查看您想尋找之資訊的連結。
    HTTP 500.100 - 內部伺服器錯誤 - ASP 錯誤
Internet Information Services

錯誤類型:
Microsoft JET Database Engine (0x80004005)
無法指出的錯誤
-------------------------------------------------------------------
或是
-------------------------------------------------------------------
請嘗試執行下列動作:

按一下 重新整理按鈕,或稍後再試。
 開啟 XXXXX 首頁,然後查看您想尋找之資訊的連結。
 HTTP 500.100 - 內部伺服器錯誤 - ASP 錯誤
Internet Information Services

錯誤類型:
Microsoft VBScript 執行階段錯誤 (0x800A01A8)
此處需要物件
-------------------------------------------------------------------
解決方法:
原來是使用了清理系統垃圾的批次檔案,裡面有一個步驟是先移除Temp資料夾再重新建立Temp,導致系統內的Temp資料夾權限跑掉,只要在%SystemRoot%\Temp資料夾上,給予everyone及IUSER_電腦名稱擁有讀取及寫入權限,網頁就可恢復正常運作。


另外以下這段簡單的程式碼是用來測試伺服器ASP網頁搭配ACCESS資料庫在IIS Server是否能正常運作,用來判斷是哪一端(IIS or Code or ODBC)發生的錯誤的參考依據。

ps. <及%中間的空格請自己刪除。

< %
Set conn =Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("test.mdb")
sql = "select * from data1"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,1

If Not rs.EOF Then
    Do Until rs.EOF
        Response.Write rs("data1")
        Response.Write Server.MapPath("test.mdb")
     rs.MoveNext
   Loop
End If

rs.Close
Set rs = Nothing
% >