あなたはCHECKDB
(DBCC CHECKDB WITH TABLERESULTS
)とTABLERESULTS
オプションを使用することができます。 これは、Error
、Level
、State
、MessageText
(その他多くのもの)のような列を持つレコードセットを提供します。
Level
そのレコードセットの列(重大度)は、エラーがあるかどうかを判断するのに十分である必要があります。
MSは、レベル11〜16は「ユーザーによって生成され、ユーザーが修正できる」としています。だから私は17以上のものは、バックアップを作るのを止め(壊れたもので良いバックアップを上書きしないように)、できるだけシステムをオフラインにして、すぐにオペレータに知らせるということです。
レベル11〜16は、(通常の電子メールなどで)オペレータにも報告する必要があるため、必要に応じて確認する必要があります。 (。CHECKDB
が今まで/エラーを記録ものの傷つけることはありません、おそらくオペレータに通知するためにそこにコードを有するものの16を介してレベル11でエラーを報告するかどうか私はわからない。)
注ます。if TABLERESULTS
とNO_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が例外をスローすることによって反応すると思います。 また、重大度> = 20のエラーであるため、クライアント接続が閉じられます。
は、すべてのアップこれを要約すると:私は
DBCC CHECKDB WITH TABLERESULTS
を実行すると思います。コマンドが失敗した場合、問題が発生している可能性があります。そうでない場合は、結果セットをループして、重大度> = 17を探します。見つけた場合は、重大な問題もあります。
DBを破損させる方法のURLをありがとう、本当に便利です。 –
あなたは大歓迎です! –