Sql-Server

SQL Server 2008 DBCC 問題

  • October 4, 2015

我們有一個數據庫 Ms

DBCC CHECKDB (MS)

要麼

ALTER DATABASE MS SET SINGLE_USER
DBCC CHECKDB(MS,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE MS SET MULTI_USER

錯誤資訊

消息 0,級別 11,狀態 0,行 0:

目前命令發生嚴重錯誤。結果,如果有的話,應該丟棄。

消息 0,級別 20,狀態 0,行 0:

目前命令發生嚴重錯誤。結果,如果有的話,應該丟棄。


在花費數小時測試每個表後,發現有問題的表是“LC”

DBCC CHECKTABLE(LC)

錯誤資訊

消息 211,級別 23,狀態 51,第 1 行:

可能的架構損壞。執行 DBCC CHECKCATALOG。


現在,

DBCC CHECKCATALOG

資訊

DBCC 執行完成。如果 DBCC 列印錯誤消息,請聯繫您的系統管理員。


我還嘗試查看索引

SELECT * FROM sysindexes

錯誤資訊

消息 211,級別 23,狀態 51,第 1 行:

可能的架構損壞。執行 DBCC CHECKCATALOG。

消息 0,級別 20,狀態 0,行 0:

目前命令發生嚴重錯誤。結果,如果有的話,應該丟棄。


再次,

SELECT * FROM LC 

要麼

DROP TABLE LC

錯誤資訊

消息 211,級別 23,狀態 51,第 1 行:

可能的架構損壞。執行 DBCC CHECKCATALOG。

消息 0,級別 20,狀態 0,行 0:

目前命令發生嚴重錯誤。結果,如果有的話,應該丟棄。


我不介意該特定表的數據失去,我希望刪除該表。任何想法,請幫助!

你可以RESTORE而且永遠不會使用*(這篇文章值得一讀)*!說真的,再多的 DBCC voodoo 也不會讓您的數據庫恢復到原始的工作狀態。REPAIR_ALLOW_DATA_LOSS

這些類型錯誤的最可能原因是磁碟驅動器故障。在繼續進行故障排除之前,請使用hdtunechkdsk /R. 我還建議進行記憶體測試(有一個稱為 Windows 記憶體診斷的內置測試。)

一旦你確定機器沒問題,你就可以將所有好的表複製到一個新的數據庫中。然後您可以刪除舊數據庫。

引用自:https://dba.stackexchange.com/questions/11241