適用対象:SQL Server
詳細
アイテム | 先頭値 |
---|---|
製品名 | SQL Server |
イベント ID | 8992 |
イベント ソース | MSSQLSERVER |
コンポーネント | SQLEngine |
シンボル名 | DBCC3_CHECK_CATALOG |
メッセージ テキスト | カタログ メッセージ ERROR Level LEVEL の確認、状態 STATE: MESSAGE |
注
8992 エラー メッセージでは、実際の不整合に関する別の特定のメッセージ (3851 から 3858 まで) が参照されます。
説明
DBCC CHECKCATALOG
または DBCC CHECKDB
指定したオブジェクトのシステム メタデータ テーブルに不整合が見つかりました。 つまり、記録されたオブジェクト ID とエラー メッセージで指定されたオブジェクトの間に不整合があります。
このエラーは、1 つ以上のシステム テーブルが、システム メタデータに不整合を作成する方法で手動で更新された場合に発生する可能性があります。 たとえば、sysobjects
やsysindexes
などの他のテーブルの関連付けられた行を削除せずに、syscolumns
テーブルからオブジェクトを手動で削除できます。
このエラーは、SQL Server 2000 (8.x) から新しいバージョンの SQL Server にアップグレードされたデータベースに対して DBCC CHECKDB
を実行しているときに発生する可能性があります。 SQL Server 2000 (8.x) では、DBCC CHECKDB
DBCC CHECKCATALOG
機能が含まれていなかったため、SQL Server 2000 (8.x) のデータベースに対してDBCC CHECKCATALOG
が具体的に実行されない限り、アップグレード前にエラーはキャッチされません。
エラー 8992 と共に、次のいずれかのエラーが表示される場合があります。
メッセージ識別子 | メッセージ テキスト |
---|---|
3851 |
An invalid row (%ls) was found in the system table sys.%ls%ls. |
3852 |
Row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3853 |
Attribute (%ls) of row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3854 |
Attribute (%ls) of row (%ls) in sys.%ls%ls has a matching row (%ls) in sys.%ls%ls that is invalid. |
3855 |
Attribute (%ls) exists without a row (%ls) in sys.%ls%ls. |
3856 |
Attribute (%ls) exists but should not for row (%ls) in sys.%ls%ls. |
3857 |
The attribute (%ls) is required but is missing for row (%ls) in sys.%ls%ls. |
3858 |
The attribute (%ls) of row (%ls) in sys.%ls%ls has an invalid value. |
ユーザー アクション
指定したオブジェクトを削除して再作成する
可能であれば、指定されたオブジェクトを削除して再作成します。 たとえば、オブジェクトがストアド プロシージャまたはユーザー定義型の場合、オブジェクトを再作成すると問題が解決する可能性があります。
バックアップからの復元
問題がハードウェア関連ではなく、既知のクリーン バックアップが使用可能な場合は、バックアップからデータベースを復元します。 このアクションは、バックアップにメタデータ エラーが含まれていない場合にのみ適用されます。
データを新しいデータベースにエクスポートする
また、バックアップにメタデータの不整合が含まれている場合は、新しいデータベースを作成し、作成したデータベースに既存のデータベースのコンテンツをエクスポートする必要があります。
DBCC CHECKDB でこのエラーを修復できない
このエラーは修復できません。 バックアップからデータベースを復元できない場合は、Microsoft サポートにお問い合わせください。
システム テーブルを手動で更新しない
システム テーブルを手動で更新しないでください。 SQL Server では、システム データベースの手動変更はサポートされていません。 SQL Server データベース内のシステム テーブルを更新すると、次のイベントがログに記録されます。
システム テーブルが手動で更新された場合
Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.
手動で更新されたシステム テーブルを使用してデータベースを開始する
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.
システム テーブルが手動で更新された後、DBCC CHECKDB コマンドを実行します
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.