TABLERESULTS
オプションはCHECKDB
( ) で使用できますDBCC CHECKDB WITH TABLERESULTS
。Error
これにより、 、Level
、State
、MessageText
(その他多数) のような列を持つレコードセットが得られます。
Level
エラーがあるかどうかを判断するには、そのレコードセットの列 (重大度レベル) で十分です。
MS は、レベル 11 から 16 は「ユーザーによって生成され、ユーザーが修正できる」と述べています。したがって、17 を超える場合は、バックアップの作成を停止し (壊れたバックアップで正常なバックアップを上書きしないようにするため)、可能であればシステムをオフラインにして、すぐにオペレーターに通知する必要があります。
また、レベル 11 から 16 についても (通常の電子メールなどで) オペレーターに報告し、必要に応じて確認できるようにする必要があります。(CHECKDB
ただし、レベル 11 から 16 でエラーが報告されるかどうかはわかりません。エラーをログに記録したり、オペレーターに通知したりするためのコードがそこにあれば、おそらく害はありません。)
注: と組み合わせTABLERESULTS
てNO_INFOMSGS
、 でCHECKDB
エラーが見つからない場合、結果としてレコードセットは取得されず、行のないレコードセットも取得されません。
注 2 : 特定の条件下でCHECKDB
は、エラー コードで失敗するだけです。これまでのところ、これをトリガーするエラーは 1 つしか見たことがありません。次のようになります。
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 以上のエラーであるため、クライアント接続が閉じられます。
これをすべて要約すると、私は実行しますDBCC CHECKDB WITH TABLERESULTS
。コマンドが失敗した場合は、問題があります (おそらく重大な問題)。そうでない場合は、結果セットをループして、17 以上の重大度を探します。重大度が見つかった場合は、何らかの深刻な問題もある可能性があります。