[FIX] CheckDB がエラー 8909 またはエラー 8905 を修正しない場合がある

この記事は、以前は次の ID で公開されていました: JP308795
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
DBCC CHECKDB が並べ替え用に割り当てられたページでエラー 8909 を報告する場合に、repair_allow_data_loss オプションを指定して DBCC CHECKDB を実行すると、DBCC CHECKDB はエラーが修正されていないにもかかわらず、エラーが修正されていると報告します。通常、エラー 8905 は、8 個以上のエラー 8909 のグループと同時に発生します。修復オプションの設定に関係なく、次の DBCC CHECKDB の実行は、同じ 8909 と 8905 のエラー メッセージのセットを報告します。

以下はエラー メッセージのサンプルです。
サーバー : メッセージ 8905、レベル 16、状態 1、行 1
データベース ID 10 のエクステント (1:192) が GAM に割り当てられていますが、SGAM または IAM が割り当てられていません。
または
サーバー : メッセージ 8909、レベル 16、状態 1、行 1
テーブル エラー : オブジェクト ID 0、インデックス ID 0、ページ ID (1:192)。ページ ヘッダー内のページ ID = (0:0)。
原因
修復オプションを指定した DBCC CHECKDB ステートメントは、エラー 8909 が修復されたと誤って報告します。この問題は並び替え用に割り当てられたエクステントとページだけで発生します。並び替えに使用されるページは以下のフィールド値を持っています。
  • ページの種類が SORT_PAGE (7) に設定されています。
  • オブジェクト ID が 0 です。
  • インデックス ID が 0 です。
解決方法
この問題を解決するために、SQL Server 2000 の最新の Service Pack の適用をお願いいたします。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。この問題を修正するには、CHECKDB は objid と indid が 0 に割り当てられたページだけを含むエクステントを削除するように、アロケーションの修復を強制的に行う必要があります。

この問題を解決するには、SQL Server 2000 Service Pack 2 をインストール後、repair_allow_data_loss オプションを指定して DBCC CHECKDB を実行します。
SQL Server 2000 Service Pack 2 を適用せずに問題を解決するには、DTS (データ変換サービス) を使用して、データベースを外部に転送します。
状況
弊社では、これを Microsoft SQL Server version 2000 の問題として確認しています。
この問題は、Microsoft SQL Server version 2000 Service Pack 2 で修正されています。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 308795 (最終更新日 2001-12-10) をもとに作成したものです。

DBCC NEWALLOC CHECKALLOC CHECKTABLE objid, indid
プロパティ

文書番号:308795 - 最終更新日: 12/06/2015 06:02:40 - リビジョン: 2.1

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix KB308795
フィードバック