SQL Server データベースを含むコンピューターで DBCC CHECKDB コマンドを実行するとエラー メッセージが表示される
この記事では、SQL Server データベースを含むコンピューターでコマンドをDBCC CHECKDB
実行するときに発生する問題を回避します。
元の製品バージョン: SQL Server 2008
元の KB 番号: 960791
現象
次のような状況で問題が発生します。
Microsoft SQL Server 2008 または SQL Server 2005 データベースをバックアップから復元します。
復元プロセス中に、データベースの復元を妨げるエラーが発生します。
CONTINUE_AFTER_ERROR オプションを使用して、同じバックアップからデータベースを正常に復元しました。
このシナリオでは、SQL Server データベースを含むコンピューターで DBCC CHECKDB コマンドを実行すると、次のようなエラー メッセージが表示されます。
メッセージ 8967、レベル 16、状態 216、サーバー <サーバー名>、2 行目
DBCC で内部エラーが発生したため、それ以上の処理ができませんでした。 カスタマー サポートにお問い合わせください。
"データベース名>" の< DBCC の結果。メッセージ 8921、レベル 16、状態 1、サーバー <サーバー名>、1 行目
チェックは終了しました。 ファクトの収集中にエラーが検出されました。 tempdb の領域が不足しているか、システム テーブルに一貫性がない可能性があります。 前のエラーを確認します。
さらに、次のようなメッセージがSQL Serverエラー ログに表示される場合があります。
2007-05-26 07:13:49.21 spid58 DBCC は、内部データベース スナップショットのログ LSN (<LSN) の現在の末尾より大きい LSN> を持つページを検出しました。 ページ (ファイル ID:ページ ID)、データベース '<データベース名' (データベース ID データベース ID>)、LSN = (<LSN>)、型 = 32、isInSparseFile = 1 を読み取れませんでした。 この DBCC コマンドを再実行してください。
原因
この問題は、コマンドがデータベースの DBCC CHECKDB
整合性を確認するために必要なチェックを実行できない場合に発生します。 これらのチェックは、多くの理由で実行できませんでした。 たとえば、メタデータの不整合やデータベーススナップショット破損など、データベースに基本的な不整合がある場合、この動作が発生する可能性があります。 このエラーの具体的な原因の詳細については、エラー メッセージに表示されるさまざまな状態を調べることで判断できます。 「現象」セクションで説明されているシナリオでは、状態 216 メッセージは、コマンドがログ LSN の末尾よりも大きいログ シーケンス番号 (LSN) を持つ内部スナップショットからページを読み取っていることをDBCC CHECKDB
示します。 この動作は、 CONTINUE_AFTER_ERROR オプションを使用してデータベースを復元する場合に発生する可能性があります。
回避策
この問題を回避するには、 コマンドで TABLOCK ヒントを DBCC CHECKDB
使用します。 これにより、エラー メッセージを DBCC CHECKDB
生成せずにコマンドを完了できます。
TABLOCK ヒントの詳細については、次の Microsoft Web サイトを参照してください。 ヒント (Transact-SQL) - テーブル。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示