Access資料庫出現0x80004005問題的解決方法

2020-11-23 站長之家

這篇論壇文章著重介紹了Access資料庫出現0x80004005問題的解決方法,更多內容請參考下文:

項目做了三個月了,終於也差不多完成了,昨天交去測試,結果出現了下面這樣的問題:

[OleDbException (0x80004005): Unspecified error]

System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20

System.Data.OleDb.OleDbConnection.InitializeProvider() +57

System.Data.OleDb.OleDbConnection.Open() +203

Webb.WAVE.Controls.OleDBManager.FillDataTable(DataTable i_dataTable) +85

Webb.WAVE.Controls.WaveExpire.LoadExpireDateForClient(DataTable i_table, Int64 i_clientID) +189

Webb.WAVE.inc_Client_AccessManage.LoadExpireDate(String i_sortKey) +99

Webb.WAVE.inc_Client_AccessManage.Page_Load(Object sender, EventArgs e) +85

System.Web.UI.Control.OnLoad(EventArgs e) +67

System.Web.UI.Control.LoadRecursive() +35

System.Web.UI.Control.LoadRecursive() +98

System.Web.UI.Control.LoadRecursive() +98

System.Web.UI.Page.ProcessRequestMain() +750

說明一下:這個錯誤總會在運行一段時間後出現,而等一會工(不定多少時間),或者重新啟動IIS或者伺服器,這個問題就解決了。而再運行一會又會(時間越來越短)出現這個問題。

而我在自己的電腦是運行時,基本上沒出現這樣的問題,於是反覆的查找原因,不得其解,在MSDN裡找到了三篇相關的文章:其中這一篇還有點道理:

SYMPTOMS

When trying to connect to an Access .mdb file, an ODBC error is returned stating "Disk or Network Error". The Microsoft OLE DB Provider for the Microsoft Jet database engine may also return an "Unspecified error" (error code = 0x80004005) message.

The problem can occur only when the data source is opened under the Microsoft Internet Information Server (IIS) or a Microsoft Windows NT service but not under a logged-on user account.CAUSE

Jet creates a temporary file when the engine is started. In doing so, it first checks the TMP environment variable and uses that path to define where the temporary file is created. If it doesn't see a TMP environment variable, it looks for the TEMP environment variable. If TEMP is not defined, it then uses the Windows folder (\WINDOWS or \WINNT).

If TMP/TEMP is defined but points to a nonexistent folder, the error occurs.

Moreover, when opening the Access database through IIS or a Windows NT service, and when IIS or the service is running under the local system account, the TMP or TEMP system environment variable is used. When the Web services or Windows NT service are started using a user account, the TMP/TEMP user profile environment variables is used.RESOLUTION

Define a TMP or TEMP environment variable and assign the variable to an existing folder. If you are accessing the Access database from IIS, be certain to check the system environment settings rather than environment variables of the logged-on user. Also ensure that the IUSER anonymous IIS account has access to the temporary folder.

You must restart the computer after changing any environment variables.

Environment variables are set under Windows NT 4.0 by going to the Control Panel and clicking System and then selecting the Environment tab.

然而我不解的是,為什麼在前幾個星期的測試中沒有這個問題,而在最近幾天,出現的越來越頻繁呢?

在網上找了幾篇相關的文章(有好多論壇上的帖子也有討論這個問題的,但我沒能找到解決答案):

思考幾小時間後,我想會不會是不能建立臨時文件的原因呢?其實只要能讓錯誤在我自己的電腦上出現,那我就好辦了,但問題是,只是偶而出現在我的電腦上,而且很快就好了,從頭到尾都只出現過兩三次。但在伺服器上卻出現問題越來越多了,幾分鐘就不行了。根據前面的一些文章來分析,我決定做以下一個測試:

1、刪除IIS在Windows下的帳號(Internet Guest Account)的文件寫權限當然,只對項目的目錄。

2、同時也刪除它在臨時目錄(C:\Documents and Settings\WEBB-COUNTRY-WU\ASPNET\Local Settings\Temp,不的機器所有不同)的寫權限。

好了,終於在我的電腦上也出現了同樣的錯誤,而且所有的與資料庫相關的頁面都不能訪問。而且根據MSDN裡的說明,這是因為沒有權限在臨時目錄裡寫文件而產生的,與之相同。然而,問題又在於,伺服器上的並不是一直錯誤,而是一時錯誤一時正常。

唯一可以解釋的就是伺服器臨時文件滿了!!!!而這又不好證明,我不可能一直測試,讓我的臨時文件也滿了(就算是COPY文件到臨時目錄裡,也不能算是IIS帳號的,而是操作者的),而且臨時文件它自己(OLEDB的連結線程)也會刪除的。只好另外想辦法,就是用磁碟配額。給IIS帳號:Internet Guest Account在C盤只有10K的寫權限,然後測試,果然問題如期而致。。。。。。

到此,可以肯定:伺服器上的臨時文件太多了,看來是要重新啟動一下伺服器,或者要清理臨時文件或者調整磁碟空間了……

希望這篇文章能幫助那些還沒有解決問題的人。同時,MS網站及MSDN上的幾篇文章也都還很有幫助意義的,特別是說明的其它幾個錯誤原因。

相關焦點

  • 常見的80004005錯誤及其解決方法
    首頁 > 語言 > 關鍵詞 > 方法最新資訊 > 正文 常見的80004005錯誤及其解決方法
  • stm32單步調試,出現*** error 65: access violation at 0x40023
    問題解決如題:在單步調試的時候,總是在systeminit()中運行,全速執行不起作用,出現調試錯誤信息如下本文引用地址:http://www.eepw.com.cn
  • 實踐分享:ACCESS資料庫導入mysql資料庫
    作為程式設計師很多時候要進行不同資料庫之間的導入導出工作,這樣是為了節省數據錄入的時間。下面我就和大家分享一下如何把數據從ACCESS資料庫導入mysql資料庫。首先說明一下思路,可以導入mysql的方法有很多,但不包過access直接導入,網上有很多介紹CSV格式導入mysql的,但操作很不方便,經常發生錯誤而無法導入。sql語句導入是最簡單的。那有沒有辦法把access資料庫轉換成sql語句呢。
  • 將mysql數據導入access資料庫
    mysql資料庫表sqltable 欄位id,name,sex,email access資料庫表accesstable id,name,sex,email ?
  • Win10專業版激活不了報錯「0x80070005」 如何解決?
    【PConline資訊】最近一位用戶在激活Win10專業版系統時出現了錯誤,系統彈出Windows Script Host窗口,內容顯示為「錯誤:0x80070005 拒絕訪問:所請求的操作需要提升特權」,這該怎麼辦呢?想解決這個問題其實不難,下面給大家分享兩種解決辦法。
  • 光模塊在使用時會出現的常見問題及解決方案匯總
    導讀 光模塊作為較敏感的光學器件,在使用過程中有時候會出現一些問題,下面易天光通信(ETU-LINK)就給大家羅列一些光模塊在使用中比較常見的問題及解決的辦法,一起來學習一下吧
  • 絕地求生國服綁定出現Access Denied解決方法
    絕地求生國服老兵回歸點擊千萬steam登錄時可能會出現"Access Denied"等字樣,下面帶來解決方法老兵回歸出現Access Denied解決方法出現這個問題的原因可能是人數太多或者steam的dns出現了一些問題,綁定器也有可能是罪魁禍首。
  • 電腦開機藍屏停機碼0x0000006b的解決辦法
    A problem has been detected and Windows has been shut down to prevent damage to your computer.一個問題已經被發現和窗戶已經關閉,以防止損壞您的計算機。點評:病毒、木馬、不良程序,甚至於大名鼎鼎的程序都會是藍屏的罪魁禍首!
  • 《極限競速:地平線3》下載0x80070005錯誤怎麼辦
    :地平線3下載0x80070005錯誤提示解決方法,一起來看看吧!問題描述: add-appxp... 極限競速:地平線3下載0x80070005錯誤怎麼辦,想必大家都很想知道吧,小編給大家帶來極限競速:地平線3下載0x80070005錯誤提示解決方法,一起來看看吧!
  • 三方法解決SQL Server與雲端資料庫連接
    【IT168專稿】SQL Azure 是構建在SQL Server技術之上的關係型雲端資料庫服務,為用戶提供了自主管理、高可用性、高可擴展的資料庫服務。用戶可以使用現有的T-SQL和關係型資料庫知識與工具,在雲端方便地構建自己的資料庫服務。
  • 一些長時間GC停頓問題的排查及解決辦法
    本文將描述一些可能碰到GC長暫停的不同場景,以及說明我們如何排查和解決這些GC停頓的問題。下面是一些應用在運行時,可能導致GC長暫停的不同場景。1. 碎片化這個絕對要排在第一位。為什麼CMS場景下會有碎片化問題?由於CMS在老年代回收時,採用的是標記清理(Mark-Sweep)算法,它在垃圾回收時並不會壓縮堆,日積月累,導致老年代的碎片化問題會越來越嚴重,直到發生單線程的Mark-Sweep-Compact GC,即FullGC,會完全STW。
  • Win10應用商店網頁版出現白屏提示「Access Denied」
    微軟Windows10商店自從開放以來,就出現過很多次錯誤,不過受影響的多是Win10 Mobile和Windows10 PC設備端。但剛剛PConline小編發現Windows商店網頁版突然遭遇Access Denied(拒絕訪問),整個商店網頁呈現白屏,無法顯示正常內容。
  • 想成為嵌入式程式設計師應知道的0x10個基本問題
    這是一個有極高可移植性的方法,是應該被用到的方法。最佳的解決方案如下:#define BIT3 (0x1 << 3)static int a;void set_bit3(void) {a |= BIT3;}void clear_bit3(void) {a &= ~BIT3;}一些人喜歡為設置和清除值而定義一個掩碼同時定義一些說明常數
  • api 微博數據專題及常見問題 - CSDN
    2018.4.16 說明注意:今天有人言語惡劣地評論我的博客是垃圾,說我的代碼有問題,這篇博客歷史久遠,是我初玩爬蟲寫的博客。我非常感謝能對我的代碼提出意見的人,但是出言不遜,態度惡劣的人我是忍受不了的,有話好好說,是一個現代社會高學歷高知識分子的最低覺悟。代碼我已經改過了,如果還有問題非常歡迎大家來溫和地指出!!!!
  • 運維處理問題思路_it運維問題思路 - CSDN
    作為一名合格的 Linux 運維工程師,一定要有一套清晰、明確的解決故障思路,當問題出現時,才能迅速定位、解決問題,這裡給出一個處理問題的一般思路: 重視報錯提示信息:每個錯誤的出現,都是給出錯誤提示信息,一般情況下這個提示基本定位了問題的所在
  • 絕地求生國服點擊steam帳號出現accessdenied[多圖]
    但是大家使用PC綁定器的時候點擊steam帳號之後登錄就會出現一個白色的錯誤的頁面,顯示的英文是access denied。目前很多玩家都是出現了這個問題,不排除是官方自己的原因到底訪問被拒絕。如果是官方的問題,那麼大家就要耐心等待了。現在遊戲還沒有開,大家的問題還是比較多的。
  • 遠程連接不上SQL資料庫6大可能的問題原因列舉
    打開APP 遠程連接不上SQL資料庫6大可能的問題原因列舉 發表於 2018-10-27 09:31:40 大家如果按照此步驟還不能解決問題,建議客戶自己百度相關的資料查閱) 1啟用TCP/IP協議 1、打開SQL配置管理器
  • SQL資料庫用戶只有「名稱」而無「登陸名」解決
    首頁 > 語言 > 關鍵詞 > 資料庫最新資訊 > 正文 SQL資料庫用戶只有「名稱」而無「登陸名」解決
  • 數學之美:平方根倒數速算法中的神奇數字 0x5f3759df
    0x5f3759df這篇文章講述一個神奇的常數 0x5f3759df 和一個非常簡潔的算法,平方根倒數速算法,也是這個常數的來源。現如今這個函數很出名,而它的流行是從出現在 2005 年的 Quake III Arena 的源碼中開始的,起初歸功於 John Carmack,但後來發現早在 Quake 之前,80 年代中期,Ardent Computer 公司就已使用,比 SGI 和 3dfx 還早,已能追溯到的最初作者是 Greg Walsh。