无法解释的 DBCC CHECKDB 命令输出

Lee*_*ain 4 sql-server dbcc dbcc-checkdb sql-server-2017

Microsoft SQL Server 2017 (RTM-CU14-GDR) (KB4494352) - 14.0.3103.1 (X64) 2019 年 3 月 22 日 22:33:11 版权所有 (C) 2017 Microsoft Corporation Developer Edition(64 位),Windows Server 2016(数据中心 10.0)内部版本 14393:)(管理程序)

我的生产服务器在 SQL 代理作业中执行这些命令以将结果输出到我的管理数据库中的表:

DECLARE @SQL VARCHAR(MAX) = 'master..xp_cmdshell ''SQLCMD -E -Q"DBCC CHECKDB('+@Database+') WITH NO_INFOMSGS, ALL_ERRORMSGS"'''; -- If all is well, there will be no output.
INSERT INTO DBCC_CHECKDB_Results EXEC(@SQL);
Run Code Online (Sandbox Code Playgroud)

昨晚,输出一行信息,作业停止执行,作业历史记录中没有显示错误。一行信息是:

“Sqlcmd:警告:上次操作已终止,因为用户按下了 CTRL+C。”

这怎么可能?周日晚上 10:00,没有人登录到服务器。CTRL+C不在命令行中。

作为测试,我执行了此命令,并在执行时键入CTRL+C::

USE ARC 
DBCC CHECKDB WITH NO_INFOMSGS, ALL_ERRORMSGS:
Nothing happened. 
Run Code Online (Sandbox Code Playgroud)

关于什么会导致该输出行的任何想法?

谢谢,李

Han*_*non 5

您看到的错误消息:

Sqlcmd:警告:由于用户按下了 CTRL+C,上次操作已终止。

当 sqlcmd 在等待来自 SQL Server 的响应时被要求退出时发生。很可能是某人(或某物)杀死了运行 SQLCMD.exe 的衍生 cmd.exe 进程,这导致该错误消息被定向到 SQL Server 错误日志。

DBCC CHECKDB您应该简单地设置一个标准的 T-SQL 作业步骤来DBCC CHECKDB直接运行命令,而不是使用 SQLCMD 来执行。

或者,运行Ola Hallengren 出色的免费和开源维护解决方案,或其他无数可用的解决方案之一。