SQL Server がドライブにデータを書き込むとき、データを再び読み込む必要があるまで、すべてが正常であると仮定しています。
ディスク上のデータがまだ意味を持つことを定期的に確認する必要があり、そこで DBCC CHECKDB の出番となります。 これは、割り当てエラーと一貫性エラーの両方をチェックします。 さらに、問題がある場合、エラーメッセージは、エラーが存在する場所、エラーの重大度、および推奨される修復オプションに関する情報を含んで戻ってきます。
CHECKDB を定期的に実行して、エラーが存在する場合はそれを見つけることが不可欠です。
問題を見つけるために、各データベースをチェックして、DBCC CHECKDBが過去2週間に正常にチェックを完了したことを確認します。
Don’t Believe It?
「でも、私はいつもCHECKDBを実行している」と言うかもしれません。
1
|
DBCC DBINFO(‘StackOverflow’) WITH TABLERESULTS
|
これだけですね。 しかし、出力は悪夢のようです。 80行ほどの、おそらくは決して気にすることのない内容です。
Hi, I’m nonsense.
そしてこれがおそらくあなたが見るものです!50行目あたりがあなたが探しているものでしょう。 1900-01-01という日付など。 つまり、一度もない。 データベースに対してDBCC CHECKDBを実行すると、おそらくこのようになります。
1
|
DBCC CHECKDB(‘StackOverflow’) WITH NO_INFOMSGS.Stack Overflow’) WITH NO_INFOMSGS.Stackオーバーフロー(Stack Overflow)データベースを実行します。 ALL_ERRORMSGS
|
そして、DBCC DBINFOコマンドを再実行すると、日付は現在に更新されました。
LOOK HOW MUCH FUN WE’RE HAVING
日付が更新されない場合、それは次の2つのうちの1つを意味します。 SQL Server はデータベースに書き込むことができない (読み取り専用であるような場合)、またはエラーを発見している (ホーウイー、良くないことです。)
問題を解決するには
組み込まれている保守計画、または Ola Hallengren の無料の CHECKDB スクリプトなどの無料のツールを使用するか決定してください。 4740>
- Maintenance Plan には、T-SQL がわからない場合のためにグラフィカルなインターフェイスがあります。
- Ola Hallengren の無料スクリプトでは、自動的に data_purity チェックを実行するなど、細かいオプションが設定できます (これはよいことです)。
破損をチェックする定期メンテナンスを設定する方法
オプション 1: メンテナンス プランを使用して DBCC CHECKDB を実行する
メンテナンス プランを使用している場合、SQL Server Management Studio で[管理]の[メンテナンス プラン]から、メンテナンス プランを編集することが可能です。 サーバーには、システム データベース用とユーザー データベース用など、異なる種類のデータベースに対して CHECKDB を実行する複数の保守計画があるかもしれません。
SSMS で管理ノードを展開し、保守計画を右クリックし、[新規計画]を選択します。
ツールボックス ウィンドウ(左側に隠れていることがあります)から、[データベースの整合性のチェック]タスクを[保守計画]タブにドラッグします。
保守計画タブで[データベースの整合性のチェック]タスクボックスをダブルクリックすると、プロセス中にチェックするデータベースを選択することができるようになります。
そこから後は、エージェント ジョブのスケジューリングと同様にスケジューリングするだけです。
保守計画を保存して閉じたら、SQL Server Agent で関連ジョブを探し、それが失敗したらオペレータに知らせるように通知プロパティが設定されているか確認してください。
Option 2: Ola Hallengren の無料スクリプトを使用して DBCC CHECKDB を実行する SQL Agent ジョブを設定する
また、整合性チェックを初めて実装する場合は、Ola Hallengren の無料メンテナンス スクリプトの使用を検討してみてください。 メンテナンス プランほど簡単ではありませんが、はるかに柔軟性があります。 また、大規模なデータベースでは、DBCCオペレーションをより小さなチャンクに分割する機能もあります。 非常に大きなデータベースでは、CHECKDB にかなりの時間とリソースがかかります。WITH PHYSICAL_ONLY オプションはより高速ですが、論理チェックが省略されます。