文章編號: 279334 - 上次校閱: 2007年1月29日 - 版次: 3.5

ACC97: 如何修復損毀的 Jet 3.5 資料庫

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
中級使用者: 需要基本巨集]、 [程式碼撰寫,] 以及 [交互操作性技巧。

如需 Microsoft Access 2.0/Jet 2.x 和 Access 95/Jet 3.0 版的本文中,請參閱 109953? (http://support.microsoft.com/kb/109953/EN-US/ ) ]。

本文章的有 Microsoft Access 2000/Jet 4.0] 版本請參閱 209137? (http://support.microsoft.com/kb/209137/EN-US/ )

在此頁中

全部展開 | 全部摺疊

結論

環境因素可能會使您的資料庫檔案損毀。損毀的資料庫的徵狀的範圍可從 #Deleted 中的特定記錄以開啟其中一個物件要完成無法在 Access 中開啟該檔案之資料庫中無法顯示。修復和在 Access 中的壓縮公用程式是復原以及最佳化 Microsoft Access 資料庫檔案的有用工具。本文將告訴您這些公用程式,並提供修復受損資料庫的其他替代方案。而且,本文 「 一般原因的 MDB 檔案毀損 」 一節中提供什麼可能導致損毀的相關資訊。

其他相關資訊

雖然本文所述的步驟是通常是成功的復原損毀來保護您資料的資料庫檔案,您應該建立經常您資料庫檔案的備份複本,,您可以。

[修復] 和 [開始壓縮公用程式

修復公用程式

修復公用程式可以修改資料庫的某些類型的傷害。它會嘗試修復只資料表、 查詢和資料庫中的索引。它不會嘗試修復損壞的表單、 報表、 巨集或模組 ; 它不會但是,將它們複製到新的已修復資料庫。

重要: 只有當 Microsoft Jet 資料庫引擎傳回錯誤訊息指出,在修復應執行,以執行 修復資料庫] 指令。修復資料庫] 指令不應在其他情況下執行。

壓縮公用程式

開始壓縮公用程式可以消除現有資料庫中的空白空間。它會操作藉由建立新的目的資料庫,並將每個物件在舊的資料庫中複製到新的。如果您選擇到原始資料庫名稱,而不到新的資料庫壓縮資料庫,開始壓縮公用程式會建立暫存資料庫、 並於將從原始資料庫的所有物件匯都出到暫時的資料庫、 移除原始的資料庫,然後重新命名暫存資料庫原始的資料庫名稱。

重要: 經常壓縮資料庫是最佳的預防維護.mdb 檔。下列是 [開始壓縮] 公用程式所執行的動作清單。
  • 使它們所在相鄰資料庫頁中,會重新組織資料表的頁面。這可以改善效能,因為表格不再分割跨資料庫。
  • 回收未使用的空間建立的物件並且記錄刪除作業。從資料庫刪除的物件或記錄,它們所佔用的空間會標示為可供新的加入項目資料庫。不過,資料庫大小永遠不會縮小除非壓縮資料庫。對於資料庫] 的物件和資料錄經常新增、 刪除,和更新您應該壓縮經常。
  • 一個以上的最高值在剩餘記錄遞增自動編號欄位,因此會配置下, 一個值會一個重設。比方說如果已刪除資料庫中的所有記錄後壓縮該資料庫, 的 [自動編號] 欄位,值會是 1 加入下一筆記錄時。如果資料庫最高剩餘的自動編號值是 50 後壓縮,,值會再是 51 加入下一筆記錄時。請注意這是,則為 True 即使記錄中所包含的值高於 50 先前已加入,但已刪除之前要壓縮。
  • 重新產生查詢最佳化程序中使用的資料表統計資料。這些統計資料可能會變得過時經過一段時間,通常如果交易已回復,或如果資料庫未正常關閉因為電源中斷或完全結束程式使用 Microsoft Jet 之前的失敗,所以您關閉電腦。
  • 旗標所有查詢,使它們將被重新編譯查詢執行的下一次。這點很重要,因為資料庫統計資料可以變更之前編譯過的查詢可能有不正確的查詢計劃。

壓縮資料庫的重要方針

之前壓縮資料庫,必須符合下列條件:

壓縮資料庫的使用者必須登入使用在資料庫中有修改設計或管理員安全性 」 權限的所有資料表中的帳戶。

即使透過 Microsoft Access 使用者介面使用相同的檔案名稱壓縮資料庫時之資料庫的原始和壓縮版本必須有足夠的磁碟空間。當原始的資料庫壓縮時,才是成功,就會更名壓縮的資料庫。

其他使用者必須沒有開啟的資料庫。當壓縮資料庫時,它必須是由 Microsoft Jet,防止任何使用者存取和修改資料庫程序期間獨佔開啟。

復原損毀的資料庫

如果您遭遇 Microsoft Jet 3.x 錯誤號碼 3197、 3343 或 3015,請也參考 「 Microsoft 知識庫 」 中下列文:
182867? (http://support.microsoft.com/kb/182867/EN-US/ ) ACC: Jet 資料庫引擎 3.x 錯誤訊息,因為以損毀
下列步驟概述修復損毀的資料庫的一般的方法:
  1. 建立損毀的資料庫 (.mdb) 檔案的副本作為備份。
  2. 請確定關閉.mdb 檔案,如果它是有刪除對應的.ldb 檔。

    注意:.ldb 檔案用來判斷哪個記錄被鎖住在共用資料庫,並由誰。如果開啟要共用的資料庫時.ldb 檔會建立對應的資料庫 (.mdb) 以同樣的名稱。比方說如果您開啟 (供共用使用) Northwind.mdb 範例資料庫 C:\Program Files\Microsoft Office\Office\Samples 資料夾中,然後一個名為 Northwind.ldb 的檔案會自動建立在同一個資料夾中。最後一個使用者已結束有兩個例外資料庫之後,會自動刪除.ldb 檔--當最後一個使用者沒有刪除包含.mdb] 檔案的資料夾或資料庫已損毀的使用權限。

    如需關於.ldb 檔的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    136128? (http://support.microsoft.com/kb/136128/EN-US/ ) .ldb 檔 (95/97) ACC: 簡介
    在疑難排解導致資料庫損毀,您可以執行 Ldbview 公用程式來檢視.ldb 檔的內容。這個公用程式有關請參閱這篇文章"How 來判斷什麼使用者/工作站造成 [檔案到被特別標示懷疑 」 一節]。
  3. 執行開始壓縮公用程式,如下所示:
    1. 如果已經開啟資料庫,關閉它。
    2. 在 [工具] 功能表上指向 [資料庫公用程式,] 然後按一下 [開始壓縮資料庫]。

      這個時候請檢查您的資料庫是否已經修復損毀,請參閱。如果沒有,繼續執行其餘步驟。
  4. 如果損毀部份是在資料表、 查詢或索引,執行修復公用程式,如下所示:

    重要: 只有當 Microsoft Jet 資料庫引擎傳回一則訊息,指出,在修復應執行,以執行 修復資料庫] 指令。修復資料庫] 指令不應在其他情況下執行。
    1. 如果已經開啟資料庫,關閉它。
    2. 在 [工具] 功能表上指向 [資料庫公用程式,然後按一下 [修復資料庫]。
    3. 在 [修復資料庫] 對話方塊中選取損毀的檔案,然後按一下 [修復]。

      如果修復成功,您會收到下列訊息:
      成功修復 '<path>< 資料庫名稱 >' 資料庫。
      如果修復不成功,您會收到一個訊息,表示操作。 這表示資料表、 查詢或索引損毀如此嚴重,無法加以修正,或所造成的損害正在 修復 公用程式不會影響的物件。
  5. 如果所造成的損害在一個資料表,且先前的步驟不已收復它,請嘗試下列方法:
    1. 在 Microsoft Access 中匯出到 ASCII (分隔文字) 檔案的資料表。如需有關這個主題中,搜尋片語 「 分隔的文字檔案,"然後檢視 [使用 Microsoft Access 說明索引"存取資料匯出 」 主題]。
    2. 刪除此資料表相關聯的任何關聯,然後再從資料庫刪除資料表。
    3. 壓縮資料庫。
    4. 重新建立資料表與它有任何關聯。
    5. 使用文字處理器,檢查 ASCII 檔案進行不良或奇怪的資料,並移除這些記錄。以 ASCII 文字檔案格式儲存檔案。
    6. ASCII 檔案再重新匯入到新重建的資料表。本主題的相關資訊,依據字詞搜尋"分隔文字檔案 」,,然後檢視匯入中或連結主題使用 Microsoft Access 說明索引。
    7. 請重新輸入您被迫刪除任何記錄。
  6. 如果先前的步驟無法將損毀的資料庫復原嘗試建立新的資料庫,並從舊資料庫轉換為新匯入物件-逐一。然後重新建立關聯性。這項技術可以解決問題的資料庫中的損毀的系統資料表。
  7. 如果損毀部份是在表單或報表中,所造成的損害可以在表單、 報表本身或在表單或報表上的一或多個控制項。您可以刪除表單或報表和它從資料庫的備份副本匯入或使用下列選項之一:
    • 如果損毀部份是在表單或報告本身,建立新的表單或新的報表,然後再將控制項複製從原始的表單或報表。
    • 如果損毀部份是在表單或報表上控制項,建立新的表單或新的報表,然後重新建立新的表單或報表上控制項。最好是重新建立所有控制項因為沒有任何方法可以分辨哪些控制項已損毀。
  8. 如果損毀部份是在巨集或模組,所造成的損害可以在巨集或模組本身或內容中的巨集或模組。您可以刪除巨集或模組和它從資料庫的備份副本匯入或使用下列選項之一:
    • 如果損毀部份是巨集或模組本身中,建立新的巨集或新的模組,然後再將複製原始巨集或模組的內容。
    • 損毀部份可能涉及內嵌於模組中的非 ASCII 字元。將模組儲存為文字檔案,請移除任何不良或奇怪的資料,然後重新載入文字的檔案到新的模組。
    • 如果損毀部份是在巨集或模組的內容中,必須建立新的巨集或模組,並再重新建立原始巨集或模組的內容。
  9. 如果損毀情況牽涉到無法開啟類別模組中的之一個表單或一個報表或模組的設計檢視,您可以試著 / decompile 命令列參數。強烈建議您在嘗試這個方法之前,先製作資料庫的備份複本。以下是用 / decompile 的參數,MSAccess.exe 其中是在其預設位置與資料庫 DB1.mdb 位於 C:\ 資料夾的範例命令:
    C:\Program Files\Microsoft Office\Office\MSAccess.exe / decompile C:\DB1.mdb
    執行此指令從 [執行] 方塊之後, 將提示您之後使用 / decompile 編譯資料庫。
  10. 請考慮下載公用程式 Jetcomp.exe。執行 Jetcomp.exe 可以在某些情況下修復資料庫,否則無法復原。如需有關如何取得 Jetcomp.exe 的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    172733? (http://support.microsoft.com/kb/172733/EN-US/ ) Microsoft Jet 3.5 可供下載的更新的版本
如果您不能修復這些步驟與資料庫,資料庫是可能無法修復損毀。如果是這種情況,應該還原上次的備份資料庫,或重新建立資料庫。

為一最終的替代方法有些顧問可能會提供 Microsoft Access 資料庫修復服務。因為這是特殊的服務,找不到由顧問向最有效率的方式,是 Microsoft Access < 第三合作對象與使用者群組 」 網際網路新聞群組有下列的新聞群組位址中公佈郵件:
microsoft.public.access.3rdpartyusrgrp
取得更多資訊有關 Microsoft Access 網際網路新聞群組按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
150057? (http://support.microsoft.com/kb/150057/EN-US/ ) 網際網路上可用的 ACC: Microsoft Access 新聞群組

典型的 MDB 檔案損毀的原因

有三個主要的原因會造成 Access/Jet mdb 檔中的損毀。

資料庫是可疑/損壞由插斷的寫入作業

您永遠應該正常結束 Access 按一下 [檔案] 功能表上的 [結束] 或 [關閉]。如果資料庫是開啟和寫入資料,Access 不正常關機時,Jet 資料庫引擎可能會將檔案標記為可疑/損毀。如果電腦以手動方式關閉不含第一個正在關閉 Windows,或是如果電源中斷,可能會出現這種情形。其他的情況下可能不會關閉 Access,但是可能仍然干擾 Jet 的寫入資料到磁碟開啟資料庫時。就可能發生這種情況,對於執行個體時網路發生資料衝突或磁碟機故障。如果任何這些中斷發生 Jet 可能將標示為可能已損毀資料庫。

當 Jet 開始進行寫入作業時,它將設定一個旗標,並在作業完成時,會重設旗標。如果中斷寫入作業旗標會保留設定。當想再次開啟該資料庫 Jet 會判定旗標設定,且報告資料庫已損毀。在大多數情況下在資料庫中的資料不實際損毀,但設定旗標警示 Jet 的可能發生損毀。在這類的情況下壓縮和/或修復資料庫都可以通常是還原資料庫。幸運的是,有種方法來判斷哪些使用者和工作站已負責將標示為可疑檔案。請參閱本文稍後的"How 來判斷什麼使用者/工作站造成 [檔案到被特別標示懷疑 」 一節。

網路硬體錯誤

在這種情況下,檔案損毀沒有牽涉到 Jet 資料庫引擎 ; 而是這個檔案逐字毀損由某些外部的原因。原因可以是其中一個或更多資料庫所在的電腦與了資料庫的電腦之間硬體鏈結中的連結開啟。此清單包括,但不限於網路介面卡、 網路纜線、 路由器和集線器。

依.mdb 檔案無法透過壓縮、 修復,或 Jetcomp 的使用來還原通常表示硬體為基礎的損毀。 修復或更換負責硬體之前,通常會循環硬體損毀。

開啟和儲存在另一個程式中的 MDB 檔案

沒有任何方法來復原.mdb 檔案,已開啟並再儲存在 Access 以外的其他程式中。例如 Microsoft Word 可讓您開啟 Access 資料庫,然後儲存它,(雖然它做沒有好用途若要這麼做,因為如果您在另一個程式中開啟一個 MDB 檔案,您可以看到所有會延伸字元)。以這種方式儲存檔案,將會導致.mdb 檔案提示您輸入資料庫密碼,當您嘗試開啟在 Access 中,即使該檔案可能永遠不會已經在存取密碼保護。密碼提示發生在這種情況下,因為第一個位元組範圍的存取檢查時開啟檔案是會資料庫密碼。如果該位元組中包含損毀的資料存取會將檔案視為被密碼保護。即使了一種方法,可以在這種情況下取得密碼提示周圍資料庫仍會是無法復原,因為變碼的二進位結構,因此無法讀取存取。在這種情況下復原檔案的備份複本是唯一的解決方案。 如需有關此問題的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
223043? (http://support.microsoft.com/kb/223043/EN-US/ ) ACC: 資料庫密碼出現,即使從未設

如何判斷哪些使用者/工作站會造成檔案被標示成可疑

您可以判斷哪一個工作站並使用者造成 Jet 將.mdb 檔案標示為可疑,就可以使用從下列 Microsoft 網站下載 Jetutils.exe 在 LDBView 公用程式:
http://download.microsoft.com/download/access97/utility1/1/WIN98/EN-US/JETUTILS.EXE (http://download.microsoft.com/download/access97/utility1/1/win98/en-us/jetutils.exe)
取得更多資訊有關 Microsoft Jet 公用程式按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
176670? (http://support.microsoft.com/kb/176670/EN-US/ ) 公用 ACC: Microsoft Jet 程式可用在下載中心
Ldbview 可讓您觀察哪些使用者目前登入該資料庫,以及任何可能有檔案保留在可疑狀態的使用者。

您可以採取預防損毀的步驟

  • 避免在資料庫寫入期間失去電源。失去電力可能會造成資料庫處於可疑的狀態。
  • 避免卸除網路連線。
  • 避免異常終止 Microsoft Jet 連線,例如電源中斷有工作管理員] 關閉應用程式的手動關機等等。
  • 當程式設計,關閉已開啟的所有資料存取物件 (DAO) 和 ActiveX 資料物件 (ADO) 物件。範例包括 資料錄集QueryDefTableDef資料庫 物件。
  • 嚴重的系統錯誤幾乎一律會導致異常終止。如果您的資料庫很容易發生嚴重錯誤,您應解決錯誤之前資料庫變得太損毀來開啟或復原。取得更多資訊有關 Microsoft Jet 公用程式按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    148424? (http://support.microsoft.com/kb/148424/EN-US/ ) 在 Microsoft Access 95 與 Microsoft Access 97 的嚴重的系統錯誤疑難排解 ACC:
  • 經常壓縮資料庫。

    重要: 在 Do 不 修復資料庫 中執行命令 Access 97 除非 Microsoft Jet 會提示您執行這項操作。
  • 請勿在 Windows NT Server 其中 Jet 資料庫位於網路上,而用戶端是使用 IPX/SPX Microsoft Windows 95 上執行 IPX。而是,在 Windows NT Server] 和 [IPX 和 TCP IP 的雙重的通訊協定堆疊在 Windows 95 用戶端上執行 TCP IP。Windows NT 到 Windows NT 與 IPX/SPX 不會也會造成這個問題不 Novell 到任何用戶端。
  • 避免大量的開啟和關閉作業迴圈 (40,000 連續開啟/關閉作業超過 1,000,000。

這篇文章中的資訊適用於:
  • Microsoft Access 97 Standard Edition
關鍵字:?
kbmt kbdownload kbdownload kbhowto kbusage KB279334 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:279334? (http://support.microsoft.com/kb/279334/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。