您可以使用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