【原創】sqlserver2005 資料庫表損壞處理一例:

msdnchina發表於2011-10-14


sqlserver2005 資料庫表損壞處理一例:

sqlserver2005中有個cwbase1資料庫,此庫中有lc0019999.xsfp表,select * from lc0019999.xsfp時,一開始還能查詢出點記錄,後來直接就報824錯誤,看到824錯誤,就知道是表有損壞了



處理步驟:

1.DBCC CHECKTABLE ( 'lc00X9999.xsfp ',REPAIR_REBUILD)
反饋如下:
lc0019999.XSFP的 DBCC 結果。
訊息 8928,級別 16,狀態 1,第 1 行
物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 92687309078528 (型別為 In-row data): 無法處理頁 (1:20184)。有關詳細資訊,請參閱其他錯誤訊息。
訊息 8939,級別 16,狀態 98,第 1 行
表錯誤: 物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 374162285789184 (型別為 In-row data),頁 (1:20184)。測試(IS_OFF (BUF_IOERR, pBUF->bstat))失敗。值為 29493513 和 -1。
物件 'lc0019999.XSFP' 的 351 頁中有 3328 行。
CHECKTABLE 在表 'lc0019999.XSFP' (物件 ID 1414296098)中發現 0 個分配錯誤和 2 個一致性錯誤。
對於由 DBCC CHECKTABLE (cwbase1.lc0019999.XSFP)發現的錯誤,repair_allow_data_loss 是最低的修復級別。
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。


2.設定cwbase1為單使用者,此時浪潮ps軟體不能使用,請提前通知使用者退出ps軟體

3.企業管理器中,選擇cwbase1,

4.DBCC CHECKTABLE ( 'lc0019999.xsfp ',repair_allow_data_loss )
反饋如下:
lc0019999.XSFP的 DBCC 結果。
修復: 已為資料庫 'cwbase1' 中的物件 'lc0019999.XSFP' 成功地重新生成了 Clustered 索引。
修復: 頁 (1:20184) 已從物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 92687309078528 (型別為 In-row data)釋放。
修復: 已為資料庫 'cwbase1' 中的物件 'lc0019999.XSFP, PK_XSFP' 成功地重新生成了 Nonclustered 索引。
訊息 8945,級別 16,狀態 1,第 2 行
表錯誤: 將重新生成物件 ID 1414296098,索引 ID 1。
該錯誤已修復。
訊息 8928,級別 16,狀態 1,第 2 行
物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 92687309078528 (型別為 In-row data): 無法處理頁 (1:20184)。有關詳細資訊,請參閱其他錯誤訊息。
該錯誤已修復。
訊息 8939,級別 16,狀態 98,第 2 行
表錯誤: 物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 374162285789184 (型別為 In-row data),頁 (1:20184)。測試(IS_OFF (BUF_IOERR, pBUF->bstat))失敗。值為 46139401 和 -1。
該錯誤已修復。
訊息 8976,級別 16,狀態 1,第 2 行
表錯誤: 物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 374162285789184 (型別為 In-row data)。在掃描過程中未發現頁 (1:20184),但該頁的父級 (1:7710) 和上一頁 (1:23386) 都引用了它。請檢查以前的錯誤訊息。
該錯誤已修復。
訊息 8978,級別 16,狀態 1,第 2 行
表錯誤: 物件 ID 1414296098,索引 ID 1,分割槽 ID 374162285789184,分配單元 ID 374162285789184 (型別為 In-row data)。頁 (1:23387) 缺少上一頁 (1:20184) 對它的引用。可能是因為鏈連結有問題。
該錯誤已修復。
訊息 8945,級別 16,狀態 1,第 2 行
表錯誤: 將重新生成物件 ID 1414296098,索引 ID 2。
該錯誤已修復。
物件 'lc0019999.XSFP' 的 351 頁中有 3328 行。
CHECKTABLE 在表 'lc0019999.XSFP' (物件 ID 1414296098)中發現 0 個分配錯誤和 4 個一致性錯誤。
CHECKTABLE 在表 'lc0019999.XSFP' (物件 ID 1414296098)中修復了 0 個分配錯誤和 4 個一致性錯誤。
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。


5.設定cwbase1為多使用者。

6.select * from lc0019999.xsfp能查詢出資料來

7.select count(*) from lc0019999.xsfpmx where xsfpmx_fpls not in (select disctinct xsfp_fpls from xsfp ) --返回0行記錄。估計是沒有丟xsfp的資料。至於丟沒有資料,還得讓業務那邊確認。


最後總結:

sqlserver2005的備份對話方塊,選項那裡,有 可靠性的選項,分為2項:“完成後驗證備份”和“寫入媒體前檢查校驗和”,不知道這兩個選項可以不可以在備份時檢測到錯誤。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161195/viewspace-1055700/,如需轉載,請註明出處,否則將追究法律責任。

相關文章