web-dev-qa-db-ja.com

「DBCC CHECKDB(データベース名、修復)」はどのタイプの修復レベルですか?

MSDNの article コマンド "DBCC CHECKDB"については、構文セクションでデータベースの修復を実行する3つの方法について説明しています。

- REPAIR_ALLOW_DATA_LOSS
- REPAIR_FAST
- REPAIR_REBUILD

しかし、容疑者(私はこれらの steps )を実行するこのモードに入れました)データベースを修復する方法を探していたときに、次のステートメントを見つけました。

DBCC CHECKDB(databaseNamerepair))

私はステートメントを実行しましたが、うまくいきました。 「_allow_data_loss」、「_ fast」、または「_rebuild」でWordを終了せずに「repair」パラメーターへの参照が存在しないため、混乱しています。

緊急ステータスのデータベースで「DBCC CHECKDB(databaseNamerepair_rebuild)」を実行しようとした場合、データベースが緊急状態のときは、そのレベルの修復を実行できないというエラーメッセージが表示されます。したがって、「repair」だけが「repair_rebuild」であることを破棄します。

そのステートメントは、私が見つけたスクリプトの3行目です。

  1. ALTER DATABASE databaseName SET EMERGENCY;
  2. ALTER DATABASE databaseName SET SINGLE_USER;
  3. DBCC CHECKDB(データベース名、修復)ALL_ERRORMSGS
  4. ALTER DATABASE databaseName SET MULTI_USER;
  5. ALTER DATABASE databaseName SET ONLINE;

3番目のステートメント実行の出力を読み取ると、プロセスに関する情報は表示されますが、修復で使用されたレベルに関連するものは何もありません。

前もって感謝します、

5
agdiaz

十分に破損したデータベースでこれを実行すると、次のエラーメッセージが表示されます。

メッセージ7909、レベル20、状態1、行1

緊急モードの修復に失敗しました。バックアップから復元する必要があります。

これはestimateにつながりますREPAIRは単にREPAIR_ALLOW_DATA_LOSSの短い形式です。少なくとも、問題のデータベースの回復可能性に関する期待に関しては、同じように扱います。言い換えれば、これは最後の手段の操作と見なされるべきであり、他のすべてが失敗したときにのみ試行されるべきです。このプロセスを実行する前に、データベースの物理コピーを必ず作成してください。

3
Max Vernon