DBA [SE]には、DBCC CHECKDB
と、エラーが返されたときに問題を解決する方法に関する質問がたくさんあります。私の具体的な質問は、実際にDBCC CHECKDB
がエラーを返したという通知を受け取ることです。ほとんどすべてのDBAは、コマンドを自動化でき、頻繁に実行する必要があることを知っています。
私は この記事Cindy Gross に出会いました。その中で、SQL Serverエージェントの使用について、CHECKDB
コマンドの実行からエラーが見つかった場合、そのステップ(または構成によってはジョブ)に失敗することについて言及しています。彼女は、トピックに関するPaul Randalのブログ投稿 here を指しています。
ここで、メンテナンスプランの データベースの整合性チェックタスク が同じことを実行することを誰かが知っているかどうか知りたいのですが。 MSDNはそれが可能であることについて言及していませんし、私が腐敗の問題に遭遇したという環境は確かにありませんでした。それがそうであると言うことはできません。これは、シンディが示唆したように、各データベースに対して特定のコマンドを実行する複数のステップでSQLエージェントジョブを設定することとは対照的です。
考え?明らかに証拠はプディングにあるので、単なる推測以上のものを提供することが役立つでしょう...
SQL Server 2008 R2インスタンスをセットアップし、次のデータベースを持っています。
Check Database Integrity Task
初期化。
計画を実行した後、失敗しました:
ログを確認した後、破損が見つかったために失敗したデータベースにアクセスした後も、追加のデータベースをチェックし続けることがわかりました。
メンテナンスプランで提供されるデータベース整合性チェックタスクは、選択したデータベースに対してDBCC CHECKDB WITH NO_INFOMSGSを発行します。タスクセットアップでビューSQLをクリックすると、コマンドを表示できます。生成されたSQLコマンドが疑わしい場合は、SQLプロファイラーを使用してそのSQLコマンドを確認できます。破損が見つかった場合、このメンテナンスタスクを含むエージェントジョブはエラーを生成し、失敗します(適切なジョブステップのセットアップ)。
指摘すべきことの1つは、DBCC CHECKDBを実行することは、DBCC CHECKALLOC、DBCC CHECKTABLE、DBCC CHECKCATALOGおよびその他の検証を実行することと同じです。 DBCC CHECKDBを実行している場合、それらを個別に実行する必要はありません。それらを個別に実行すると、通常、特定の整合性チェックを実行するか、DBCC CHECKDB全体を実行する時間が限られているため、整合性チェックをより小さなタスクに分散する必要があります。詳細については、MSDNの here を参照してください。
DBCC CHECKDBエラーについて通知を受け取るには、Powershellでエラーログを毎晩解析し、SQLエラーログにエラーがある場合、特にDBCCエラーがある場合にメールで通知します。
700以上のデータベースを監視する最も簡単な方法です。