Access數據庫被損壞主要分為以下幾種情況:1、嚴重損壞;2、輕度損壞;3、有些表被損壞或有些表的部分記錄被損壞。下面就分情況介紹解決辦法。
1、使用Access97打不開數據庫、系統提示"不可識別的數據庫格式"或"不是該表的索引"等信息,這樣的數據庫都是損壞比較嚴重的。損害嚴重的數據庫一般來說都是無法修復的,只有恢復備份了,好在這種情況比較少見。
2、如果數據庫損壞的不嚴重,只需要使用Access 97菜單上的“修復數據庫”和“壓縮數據庫”就可以把數據庫修復好。因為數據庫輕微損壞的時候,一般也不會導致軟件出什麼問題,所以也不會引起人的注意,只有當數據庫的某一個或幾個表損壞了的時候,才會使軟件變得不穩定,所以這種情況才是我們最常遇到的。
3、如何確定數據庫中哪幾個表有問題呢,我們首先利用Access 97建立一個空數據庫,利用系統提供的“引入數據庫”功能,選擇目標數據庫所有的表進行引入,Access 97當引入到有問題的表時系統會提示一些錯誤信息,把這個表的名字記下來以備以後修復時使用。
接下來利用Access97打開有問題的數據庫,准備修復表。修復損壞的表的方法依照表損壞程度不同而不同,下面分情況介紹處理的辦法:
一、表損壞的非常嚴重,表現為無法打開表,系統提示“Microsoft jet 找不到對象”、“沒有讀寫權限”或“不可識別”等信息。
處理方法:這種表的已經損壞得非常嚴重了,一般無法修復。如果這個表不很重要或通常情況下表的內容為空的話,例如“常用憑證表”、“科目共享鎖定表”或“憑證共享鎖定表”,我們可以通過引入的方法把其他數據庫的表引入,然後把有問題的表刪除即可。
二、表中有幾行內容非常混亂或字段內標有“#已刪除”字樣,但當要刪除這些記錄時就會出現錯誤信息不許刪除。
處理辦法:既然不讓刪除這些記錄,我們可以通過使用SQL語句把沒有問題的記錄復制到一個新的表中,然後把老表刪除把新表的名字改過來即可。例如“憑證及明細賬表GL_ACCVOUCH”中有錯誤記錄有無法刪除,我們可以使用如下SQL語句把好的記錄復制到GL_ACCTEMP中:
SELECT GL_ACCVOUCH.* INTO GL_ACCTEMP
FROM GL_ACCVOUCH WHERE {篩選的條件}
然後刪除表GL_ACCVOUCH,再把表GL_ACCTEMP的
名字改為GL_ACCVOUCH即可解決問題。
注釋:修復Access數據庫的注意事項,首先,我們在修復數據庫前一定要做好備份,以防數據丟失或損壞;有一些數據庫中有RELATION(關系)來維護數據的一致性,但當數據庫異常後相關表的RELATION也就丟失了,在修復好數據庫後一定要把RELATION再聯好,有些軟件可以自動修復RELATION,比如用友公司的ERP8.XX系列產品的數據庫可以通過把表accinformation中的[cSysid]='AA' and [項目號]='99'的記錄,把[設置值]和[缺省值]改為'8.0A0',重新進入系統時,系統會自動升級並重建索引。