某天訪問某個資料庫的時候,系統報錯。連上去看了一下,伺服器是SQL2008R2。由於有上次修複的經驗,先使用DBCC查看資料庫情況。 DBCC的返回: XXXXXXXXXXX發生異常資料庫 ID 7,頁 (1:1350625) 已標記為 RestorePending,可能表明磁碟已損壞。要從此狀態恢 ...
某天訪問某個資料庫的時候,系統報錯。連上去看了一下,伺服器是SQL2008R2。由於有上次修複的經驗,先使用DBCC查看資料庫情況。
DBCC的返回:
XXXXXXXXXXX發生異常資料庫 ID 7,頁 (1:1350625) 已標記為 RestorePending,可能表明磁碟已損壞。要從此狀態恢復,請執行還原操作。
消息 8978,級別 16,狀態 1,第 1 行
表錯誤: 對象 ID 1195151303,索引 ID 2,分區 ID 72057594063421440,分配單元 ID 72057594074234880 (類型為 In-row data)。頁 (1:387592) 缺少上一頁 (1:1350625) 對它的引用。可能是因為鏈鏈接有問題。
消息 8928,級別 16,狀態 1,第 1 行
對象 ID 1195151303,索引 ID 2,分區 ID 72057594063421440,分配單元 ID 72057594074234880 (類型為 In-row data): 無法處理頁 (1:1350625)。有關詳細信息,請參閱其他錯誤消息。
消息 8939,級別 16,狀態 98,第 1 行
表錯誤: 對象 ID 1195151303,索引 ID 2,分區 ID 72057594063421440,分配單元 ID 72057594074234880 (類型為 In-row data),頁 (1:1350625)。測試(IS_OFF (BUF_IOERR, pBUF->bstat))失敗。值為 12716041 和 -6。
消息 8976,級別 16,狀態 1,第 1 行
表錯誤: 對象 ID 1195151303,索引 ID 2,分區 ID 72057594063421440,分配單元 ID 72057594074234880 (類型為 In-row data)。在掃描過程中未發現頁 (1:1350625),但該頁的父級 (1:1231035) 和上一頁 (1:799122) 都引用了它。請檢查以前的錯誤消息。
考慮到該資料庫為生產資料庫,且頻繁讀寫,DBCC修複時間無法預計,故嘗試手工修複。
首先查看ID為1195151303的對象:
select * from sys.objects where object_id='1195151303'
查詢結果顯示該對象是一個數據表,名稱就是DBCC信息開始的表名。
註意到出錯信息顯示“索引 ID 2”,懷疑是索引損壞,查詢該表所有索引
select * from sys.indexes where object_id='1195151303'
結果顯示,該索引是一個非聚集索引兼主鍵。
刪除並重建該索引,再次DBCC,未報告錯誤。