Microsoft SQL Server 2017(RTM-CU14-GDR)(KB4494352)-14.0.3103.1(X64)Mar 22 2019 22:33:11 Copyright(C)2017 Microsoft Corporation Developer Edition(64-bit)on Windows Server 2016 Datacenter 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);
昨夜、1行の情報が出力され、ジョブは実行を停止しましたが、ジョブ履歴にエラーは表示されませんでした。 1行の情報は次のとおりです。
「Sqlcmd:警告:ユーザーがCTRL + Cを押したため、最後の操作が終了しました。」
これはどのようにして可能ですか?午後10時日曜日の夜、誰もサーバーにログオンしていません。 CTRL+C
はコマンドラインにありません。
テストとして、このコマンドを実行し、実行中に次のように入力しました:CTRL+C
:
USE ARC
DBCC CHECKDB WITH NO_INFOMSGS, ALL_ERRORMSGS:
Nothing happened.
その出力ラインを何が引き起こすのかについてのアイデアはありますか?
おかげで、リー
表示されているエラーメッセージ:
Sqlcmd:警告:ユーザーがCTRL + Cを押したため、最後の操作が終了しました。
SQL Serverからの応答を待機しているときにsqlcmdが終了を要求されたときに発生します。ほとんどの場合、誰か(または何か)が、SQLCMD.exeを実行していた生成されたcmd.exeプロセスを強制終了し、その結果、そのエラーメッセージがSQL Serverエラーログに送られます。
SQLCMDを使用してDBCC CHECKDB
を実行する代わりに、DBCC CHECKDB
コマンドを直接実行する標準のT-SQLジョブステップを設定するだけです。
または、 Ola Hallengrenの優れた無料でオープンソースのメンテナンスソリューション 、または他の利用可能な無数のソリューションを実行します。