DBCC CHECKCATALOG (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
指定されたデータベース内でのカタログの一貫性をチェックします。 データベースはオンラインである必要があります。
構文
DBCC CHECKCATALOG
[
(
database_name | database_id | 0
)
]
[ WITH NO_INFOMSGS ]
Note
SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
database_name | database_id | 0
カタログの一貫性をチェックするデータベースの名前または ID。 値を指定しないか 0 を指定した場合は、現在のデータベースが使用されます。 データベース名は、識別子のルールに従っている必要があります。
WITH NO_INFOMSGS
すべての情報メッセージを表示しないようにします。
解説
DBCC CHECKCATALOG
コマンドの終了後、メッセージが SQL Server エラー ログに書き込まれます。 DBCC コマンドが正常に実行された場合、メッセージでは正常完了とコマンド実行時間が示されます。 エラーが発生して DBCC コマンドが完了前に停止した場合、メッセージではコマンドが終了したことと、状態の値、コマンド実行時間が示されます。 次の表は、メッセージに含まれる可能性がある状態値の一覧と説明です。
State | 説明 |
---|---|
0 | エラー番号 8930 が発生しました。 メタデータの破損が原因で DBCC コマンドが終了しました。 |
1 | エラー番号 8967 が発生しました。 内部 DBCC エラーがあります。 |
2 | 緊急モードのデータベース修復中にエラーが発生しました。 |
3 | メタデータの破損が原因で DBCC コマンドが終了しました。 |
4 | アサートまたはアクセス違反が検出されました。 |
5 | 不明なエラーが発生し、DBCC コマンドが終了しました。 |
DBCC CHECKCATALOG
は、システム メタデータ テーブル間のさまざまな一貫性チェックを実行します。 DBCC CHECKCATALOG
は、内部データベースのスナップショットを使用して、これらのチェックを実行するために必要なトランザクションの一貫性を確保します。 詳細については、「データベース スナップショットのスパース ファイルのサイズを表示する方法 (Transact-SQL)」と、「DBCC (Transact-SQL)」の「DBCC 内部データベース スナップショットの使用」セクションを参照してください。
スナップショットを作成できない場合、DBCC CHECKCATALOG
は排他データベース ロックを取得して必要な一貫性を実現します。 不一致が検出された場合、これらは修復できず、データベースをバックアップから復元する必要があります。
Note
tempdb
に対して DBCC CHECKCATALOG
を実行してもチェックは実行されません。 これは、パフォーマンス上の理由から、データベースのスナップショットが tempdb
では利用できないためです。 つまり、必要なトランザクションの一貫性を実現できないためです。 tempdb
メタデータの問題を解決するには、データベース エンジン サービスを再起動します。
Note
DBCC CHECKCATALOG
によって、FILESTREAM データはチェックされません。 FILESTREAM はバイナリ ラージ オブジェクト (BLOB) をファイル システムに格納します。
DBCC CHECKCATALOG
は、DBCC CHECKDB の一部としても実行されます。
結果セット
データベースが指定されていない場合、DBCC CHECKCATALOG
は次の値を返します。
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
AdventureWorks2022
がデータベース名として指定されていない場合、DBCC CHECKCATALOG
は次の値を返します。
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
アクセス許可
sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーシップが必要です。
例
次の例では、現在のデータベースと AdventureWorks2022
データベースの両方におけるカタログの整合性をチェックしています。
-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks2022);
GO