web-dev-qa-db-ja.com

DBCC CHECKDBによって報告されたエラーを修正する方法

DBCC CHECKDBから次のような多くのエラーが発生します。

メッセージ8939、レベル16、状態98、行1
テーブルエラー:オブジェクトID 0、インデックスID -1、パーティションID 0、割り当てユニットID 3667181342891245568(タイプ不明)、ページ(7791:-1694668604)。テスト(IS_OFF(BUF_IOERR、pBUF-> bstat))が失敗しました。値は133129および-12です。

メッセージ8928、レベル16、状態1、行1
オブジェクトID 405576483、インデックスID 73、パーティションID 72057594049200128、割り当てユニットID 72057594054246400(タイプの行内データ):ページ(1:194923)を処理できませんでした。詳細については、他のエラーを参照してください。

メッセージ8976、レベル16、状態1、行1
テーブルエラー:オブジェクトID 405576483、インデックスID 73、パーティションID 72057594049200128、割り当てユニットID 72057594054246400(行内データタイプ)。ページ(1:194923)はスキャンで表示されませんでしたが、その親(1:186194)と前(1:194922)が参照しています。以前のエラーを確認してください。

メッセージ8980、レベル16、状態1、行1
テーブルエラー:オブジェクトID 405576483、インデックスID 73、パーティションID 72057594049200128、割り当てユニットID 72057594054246400(行内データタイプ)。インデックスノードページ(1:186194)、スロット103は子ページ(1:194924)と前の子(1:194923)を参照していますが、これらは見つかりませんでした。

メッセージ8978、レベル16、状態1、行1
テーブルエラー:オブジェクトID 405576483、インデックスID 73、パーティションID 72057594049200128、割り当てユニットID 72057594054246400(行内データタイプ)。ページ(1:194932)には前のページ(1:194931)からの参照がありません。チェーンリンケージの問題の可能性があります。

最も重要なのは、最後に、以下が中継されることです。

CHECKDBは、データベース 'houseme'で0個の割り当てエラーと28個の一貫性エラーを検出しました。

repair_allow_data_lossは、DBCC CHECKDB(houseme)によって検出されたエラーの最小修復レベルです。

私は何をしますか?

1
Zoinky

DBCC CHECKDBの出力は、何をすべきかを正確に伝えています。

USE [master];
GO

ALTER DATABASE houseme SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB(N'houseme', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE houseme SET MULTI_USER;

オプションの名前が十分に明確でない場合、これはデータ損失につながる可能性があります-バックアップがないと、実際には他に何もありません選択。

これが機能せず、バックアップもない場合は、バックアップが必要な理由について非常に高価なレッスンを学んだ可能性があります。 Paul Randalが他のアイデアを持っている 、または Steve Stedmanからのこのアイデア であるかどうかを確認できます。もちろん、保証はありません。

複数回試行しても一貫性エラーが続く場合は、新しいデータベースを作成し、できるだけ多くのconsistentデータを移行して、損失。

7
Aaron Bertrand