データベースの割り当てデータなどが壊れているかの検証を行うにはDBCC コマンドを使用します。 データベースのデータの完全性に以上がある場合は、最新のバックアップでリストアします。DBCC コマンドのREPAIR オプションで修正を行うのは最後の手段としてください。データが失われる可能性があります。

動作環境は SQL Server 2005 Developer Edition で行っています。

1. データベースの整合性を検証する

データベースのディスク割り当て構造の整合性を検査する場合は、DBCC CHECKALLOC ステートメントを使用します。DBCC CHECKDB ステートメントを使用するとデータベースの構造の整合性や論理的な整合性を検証します。CHECKTABLEやCHECKFILEGROUPを使用するとテーブルレベルやファイルグループレベルで整合性の検査を行います。CHECKCATALOGはカタログの一貫性を検査します。

エラーが発生した場合は最新の正常なバックアップからリストアを行います。CHECKDB で REPAIR オプションを使用して修正を行うとデータが失われる可能性があるので注意してください。

DBCC CHECKCONSTRAINTS ステートメントを使用するとテーブルのCHECK 制約の整合性検査を行うことができます。

-- 指定したデータベース用のディスク領域の割り当て構造について
-- 一貫性をチェックする
DBCC CHECKALLOC('Component')

-- 指定されたデータベース内のすべてのオブジェクトの割り当て、構造的整合性、
-- および論理的整合性をチェックします。
DBCC CHECKDB('Component')

-- 整合性チェックでエラーが発生した場合は、バックアップからデータベースを
-- をリストアします
-- 復元できるバックアップがない場合は DBCC CHECKDB の REPAIR オプションを
-- 使用してデータベースを修正します。ただし、REPAIRオプションではデータが
-- 失われる可能性があります。

-- DBCC CHECKFILEGROUP ファイルグループに対して整合性チェックを行います。
-- WITH ESTIMATEONLYオプションを使用すると検証を行うために必要なtempdb
-- のサイズKBを求めることができます。

DBCC CHECKFILEGROUP('PRIMARY')

DBCC CHECKFILEGROUP('PRIMARY')
WITH ESTIMATEONLY

-- DBCC CHECKTABLE テーブルに対して整合性チェックを行います。
DBCC CHECKTABLE('dbo.Article')

-- DBCC CHECKCONSTRAINTS 指定した制約や指定したテーブルの
-- すべての制約に関する整合性のチェックを行います。
DBCC CHECKCONSTRAINTS('dbo.Article')

-- 指定されたデータベース内でのカタログの一貫性をチェックします。データベースはオンラインである必要があります。
DBCC CHECKCATALOG('Component')

2.インデックスを再構築、再構成する

[T-SQL] インデックスを操作する でも紹介しましたが、ALTER INDEX ステートメントで インデックスを作り直す再構築と、デフラグを行う再構成を行えます。

-- インデックスの再構成と再構築
-- インデックスの再構成を行う
ALTER INDEX ALL ON dbo.Article REORGANIZE

-- インデックスの再構築を行う
ALTER INDEX ALL ON dbo.Article REBUILD

3. まとめ

今回の説明は以上です。誤りや指摘点があればご連絡ください。