文章編號: 283849 - 上次校閱: 2003年11月12日 - 版次: 1.0 ACC2002:如何修復和排解受損 Access 2002 資料庫的疑難
本文曾發行於 CHT283849
初學者:需要知道如何在單一使用者的電腦上操作使用者介面。
本文只適用於 Microsoft Access 資料庫 (.mdb)。 在此頁中結論
無論在 Access 的內部和外部,都可能發生幾項事件,足以損毀您的資料庫檔案。受到損毀的資料庫,其癥狀小自某些記錄出現 #Deleted 的字眼,大至無法開啟資料庫的其中一個物件,或者無法在 Access 開啟該資料庫檔案都是。Microsoft Access 的「壓縮及修復」公用程式可以幫助您嘗試最佳化 Microsoft Access 2002 資料庫檔案的功能,或者修復損毀的 Microsoft Access 2002 資料庫檔案。本文將說明這個 Access 2002 公用程式,並且提供其他的方法,讓您修復損毀的資料庫,同時也將告訴您資料庫損毀的導因。
注意:Microsoft Jet 是 Microsoft Access 所用的資料庫引擎,它是一個檔案共用資料庫系統。當 Microsoft Jet 用在多使用者環境時,會有好幾個用戶端處理程序在共用的資料庫進行檔案讀取、寫入和鎖定作業。由於多個用戶端處理程序是讀取和寫入同一個資料庫,而且 Jet 並不使用交易記錄 (像 SQL Server 這種更進階的資料庫系統就會使用),因此不可能有效防止任何及所有的資料庫損毀狀況。如果您需要資料庫系統一天 24 小時,一週七天,不斷的在多使用者環境下執行,Microsoft 建議您使用一個真正支援長久交易的主從架構資料庫系統,如 Microsoft SQL Server。 其他相關資訊
雖然本文所提的步驟,通常都可以順利將損毀的資料庫檔案復原,但為了保護資料起見,Microsoft 還是建議您三不五時地將資料庫檔案備份。 壓縮及修復公用程式的說明壓縮資料庫 當您壓縮資料庫時,壓縮處理程序會重新取得資料庫中由物件以及記錄刪除作業所建立的未使用空間。其方法是建立新的目的地資料庫,以及將舊資料庫中的每一個物件,複製到新資料庫當中。如果您選擇將資料庫壓縮到原始資料庫名稱,而不是新資料庫,那麼壓縮處理程序會建立一個暫時資料庫,將所有物件從原始資料庫匯出到暫時資料庫,然後移除原始資料庫,接著再將暫時資料庫重新改成原始資料庫的名稱。 下面是壓縮處理程序所要執行之動作的清單:
修復處理程序只會嘗試修復資料庫中的資料表、查詢和索引,而不會嘗試修復損毀的表單、報告、巨集或模組。 在執行壓縮及修復公用程式之前,必須具備哪些條件在您對資料庫執行壓縮及修復公用程式之前,務必先符合下列幾個條件:
修復受損毀資料庫的步驟下列步驟是可用來嘗試修復受損資料庫常用的方法;
最後一個方法是,有的顧問會提供 Microsoft Access 資料庫修復服務。由於這是相當專門的服務,因此尋找顧問最有效的方法,是在 Microsoft Access 的〈Third Party and User Groups〉網際網路新聞群組當中,發佈一則訊息,下面就是新聞群組位址: microsoft.public.access.3rdpartyusrgrp 其他有關 Microsoft Access 網際網路新聞群組的詳細資訊,請參閱下面這篇 Microsoft Knowledge Base 的文章:
208449?
(http://support.microsoft.com/kb/208449/EN-US/
)
ACC2000:Microsoft Access Newsgroups Available on the Internet .mdb 檔案損毀的導因有哪些?導致 .mdb 檔損毀的原因主要有下列三種:
寫入作業中斷請記住,結束 Access 時,一定要在 [檔案] 功能表上按一下 [結束] 或 [關閉],妥善的結束它。如果 Access 異常關閉時,資料庫是在開啟狀態,或者正在寫入資料,Jet 資料庫引擎可能會將資料庫標示為可疑/已經損毀。如果突然斷電,或者您以手動方式關機時,但沒有先結束 Windows,就有可能發生這種狀況。還有其他情況是,雖然沒有關閉 Access,但在開啟狀態下將資料寫入磁碟時,仍然會干涉到 Jet。比方說,當網路發生資料衝突或者當磁碟機故障時,就會發生這種狀況。如果發生上述任何一種中斷情形,Jet 也許會指出該資料庫有損毀的可能。 當 Jet 開始進行寫入作業時,它會設定旗標,等作業完成時再重設旗標。如果寫入作業中斷時,旗標仍然保持在設定狀態。當您再次開啟這個資料庫時,Jet 會判定該旗標已經設定,然後報告它已經損毀。在大部份的情況下,資料庫中的資料不見得真的損毀,但設定旗標還是會警告 Jet 可能已經損毀。如果是這樣,通常只要壓縮或修復資料庫 (或雙管齊下),就可以還原資料庫了。還好,我們還有辦法判斷哪一個使用者和工作站要負責將檔案標示為可疑檔案。您只要在 Access 2002 使用 Microsoft Visual Basic for Applications,就可以輸出一份登入特定資料庫的使用者清單。 如需有關如何執行,以及可以使用之範例程式碼的相關資訊,請按一下下面的文章編號,檢視 Microsoft Knowledge Base 中的文章: 285822?
(http://support.microsoft.com/kb/285822/EN-US/
)
HOW TO:Determine Who Is Logged onto a Database by Using Microsoft Jet UserRoster in Access 2002.
有關其做法的詳細資訊,請參閱本文後面的「如何判斷哪些使用者/工作站使檔案標示為可疑檔案」一節。網路硬體錯誤有時候,即使不牽涉到 Jet 資料庫引擎,也有可能發生損毀的情形。比方說,網路硬體錯誤可能會導致檔案損毀。原因可能是資料庫常駐的電腦以及將資料庫保持在開啟狀態的電腦之間,硬體鏈結中的一或多個鏈結所導致。這份清單包含 (但不限於) 網路介面卡、網路纜線、路由器及集線器。 硬體損毀通常是從無法藉由使用壓縮、修復或 Jetcomp 來還原的 .mdb 檔看出。硬體損毀通常會週而復始的出現,直到問題所在的硬體被修復或換掉為止。 在另一個程式開啟和儲存 .mdb 檔以另一個程式開啟再儲存的 .mdb 檔是無法復原的。比方說,您可以在 Microsoft Word 開啟和儲存 .mdb 檔,但是一旦這麼做之後,.mdb 檔就永遠無法復原,除非是從備份副本復原。如果您不慎在另一個應用程式中開啟 .mdb 檔,千萬不要儲存它。其實,在另一個應用程式開啟 .mdb 檔根本毫無意義可言,因為即使開啟了,也只能看到一系列好像隨機存在的字元。 防止損毀的步驟下面是防止資料庫損毀的步驟:
轉換的資料庫須知在 Access 2002 之前的 Access 版本當中,如果您將資料庫轉換為目前版本時發生錯誤,是很難判斷哪些物件受到影響,也難判斷哪些物件可能含有可看出的損毀狀況。 如果 Microsoft Access 2002 在轉換 Access 檔時發生錯誤,您可以用新的 Access 檔開啟轉換錯誤表,來檢視這些錯誤的彙總。轉換錯誤表含有下列幾欄: 物件類型。Access 發生錯誤所在的資料庫物件類型,如果 Access 所遇到的並非某一類物件專屬的錯誤,則為「資料庫」。 物件名稱。Access 發生錯誤所在的物件名稱。如果 Access 在轉換時發生編譯錯誤,但是,卻沒有指定包含錯誤之模組的名稱。 錯誤描述:必要的話,可以按 SHIFT+F2,檢視整個錯誤描述。 ?考
其他有關修復資料庫的詳細資訊,請按一下 [說明] 功能表上的 [Microsoft Access 說明],在 Office 小幫手或解答精靈中輸入 repairing,然後按一下 [搜尋],檢視該主題。
有關排解舊版 Access 資料庫的疑難,請按一下下面的文章編號,查看 Microsoft Knowledge Base 中的文章: 209137?
(http://support.microsoft.com/kb/209137/ZH-TW/
)
ACC2000:如何修復損壞的資料庫 279334?
(http://support.microsoft.com/kb/279334/EN-US/
)
ACC97:How to Repair a Damaged Jet 3.5 Database 109953?
(http://support.microsoft.com/kb/109953/ZH-TW/
)
ACC:如何修復已損毀的資料庫 304408?
(http://support.microsoft.com/kb/304408/EN-US/
)
ACC2002:How to Shut Down a Custom Access Application Remotely 本文件是根據 Microsoft Knowledge Base 文件編號 Q283849 翻譯的。若要參考原始英文文件內容,請至以下網址:
http://support.microsoft.com/support/kb/articles/Q283/8/49.asp
(http://support.microsoft.com/kb/283849/en-us?ln=en-us&sd=gn&fr=0)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
回此頁最上方
