您可以使用TABLERESULTS
選項與CHECKDB
(DBCC CHECKDB WITH TABLERESULTS
)。 這將給你一個列如Error
,Level
,State
,MessageText
(其中許多其他)的記錄集。
該記錄集的Level
列(嚴重級別)應足以確定是否有任何錯誤。
MS表示級別11到16是「由用戶生成的,並且可以由用戶糾正」。所以我想說17以上的任何內容都應該意味着:停止進行備份(以避免覆蓋損壞的備份),儘可能使系統脫機,並立即通知操作員。
等級11至16也應該向運營商報告(通過普通電子郵件或其他方式),以便他可以在必要時進行檢查。 (我不知道如果CHECKDB
永遠不會通過16與報告水平11錯誤雖然具有代碼在那裏將錯誤/可能通知操作雖然不會受到傷害。)
注意:如果你結合TABLERESULTS
與NO_INFOMSGS
,如果CHECKDB
沒有發現任何錯誤,你將不是得到任何記錄集,結果,甚至沒有一個沒有行。
NOTE2:在某些情況下,CHECKDB
將失敗,並顯示錯誤代碼。到目前爲止,我只看到觸發這個錯誤,它看起來是這樣的:
Msg 211, Level 23, State 51, Line 3
Possible schema corruption. Run DBCC CHECKCATALOG.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
我不使用ADO.NET不多,但我認爲ADO.NET會拋出一個異常反應。 另外,由於這是嚴重性大於等於20的錯誤,所以會導致客戶端連接關閉。我想運行。如果命令失敗,則會出現問題(可能是錯誤的)。如果沒有,繼續循環遍歷結果集,並查找任何嚴重性級別> = 17。如果發現其中一個,那麼可能存在某種嚴重問題。
感謝關於如何破壞數據庫的URL,這非常有用。 – 2009-05-22 09:25:54
不客氣! – 2009-05-22 09:47:48