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',重新進入系統時,系統會自動升級並重建索引。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()