gpt4 book ai didi

.net - 我可以从 .NET 运行 DBCC CHECKDB 吗?

转载 作者:行者123 更新时间:2023-12-03 02:14:56 24 4
gpt4 key购买 nike

我正在编写一个计划作业来模拟 SQL Express 的 SQL Server 维护计划。 (我必须这样做,因为 SQL Express 不存在 SQL 代理和相关工具)

其中一个步骤是进行数据库完整性检查。其 TSQL 是:

DBCC CHECKDB(N'Northwind')  WITH NO_INFOMSGS

我如何知道执行此命令期间是否发生错误,在使用 ADO.NET 时是否会抛出异常,或者我是否必须解析异常>命令的文本输出(如果是这样,我在输出中查找什么)

这很难测试,因为我手头没有损坏的数据库。

最佳答案

您可以将 TABLERESULTS 选项与 CHECKDB 结合使用(DBCC CHECKDB WITH TABLERESULTS)。这将为您提供一个记录集,其中包含 ErrorLevelStateMessageText(以及许多其他列)等列。

该记录集的 Level 列(严重级别)应该足以确定是否存在任何错误。

MS 表示,11 至 16 级“由用户生成,并且可以由用户更正”。因此,我认为高于 17 的任何内容都应该意味着:停止进行任何备份(以避免用损坏的备份覆盖良好的备份),如果可能,使系统脱机,并立即通知运算符(operator)。

级别 11 到 16 也应该报告给运算符(operator)(通过常规电子邮件或其他方式),以便他可以在必要时进行检查。 (不过,我不确定 CHECKDB 是否会报告级别 11 到 16 的错误。不过,在其中记录错误/通知运算符(operator)的代码可能不会有什么坏处。)

注意:如果将 TABLERESULTSNO_INFOMSGS 结合使用,并且 CHECKDB 没有发现任何错误,您将不会得到任何记录集作为结果,甚至没有一个没有行的记录集。

注意2:在某些情况下,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 会通过抛出异常来使用react。另外,由于这是一个严重性 >= 20 的错误,因此会导致客户端连接关闭。

<小时/>

总而言之:我会运行DBCC CHECKDB WITH TABLERESULTS。如果命令失败,则存在问题(可能是严重问题)。如果没有,请继续循环遍历结果集,并查找任何 >= 17 的严重级别。如果找到,则可能也存在某种严重问题。

关于.net - 我可以从 .NET 运行 DBCC CHECKDB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com