SQLデータベース「保留中のリカバリ」エラーを簡単に修復する方法

Tioka |カテゴリ:データ復旧| 2024年09月30日に更新

概要:

SQLデータベースを日常に使用している時に、「保留中のリカバリ」「保留中の回復」という状態になってしまうと、どうやって修復すればいいですか。本文では、高機能ななSQL Server向けの修復ツールで効率にこの問題を解決できる方法を皆さんに紹介します。

SQLデータベースを日常に使用している時に、専門家ではないと、たくさんの技術問題に直面しなければなりません。それらの問題の中で、「保留中の回復」は、比較的に多く発生する問題です。もし、この問題が発生すると、ご心配なく、本文では、手動にこの問題を解決する方法と、高機能なSQL Server向けのデータベース修復ツールで効率にこの問題を解決する方法を皆さんに紹介します。

SQL Serverデータベースの3つの状態

SQL ServerデータベースのMDF/NDFが破損すると、SQL Serverデータベースが下記のように、違う状態になる可能性があります。下記のSELECTステートメントを実行することでSQL Serverデータベースの状態を確認することができます。

SELECT name, state_desc from sys.databases

GO

3つの状態とその意味

オンライン:データファイルが1つ破損しても、データベースに依然としてアクセス可能でオンラインの状態が続いています。

サスペクト:トランザクションログが破損して、データベースの回復プロセスが開始されますが、正確に終了しなかったことを示しています。

保留中の回復:SQL Serverでデータベース復元を実行する必要がありますが、何らかの原因で開始できません。

「保留中の回復」問題が発生する原因

「保留中の回復」を引き起こす原因といえば、たくさんありますが、最も見られるのは下記の3つになります。

  • データベースが正常にシャットダウンされませんでした。
  • パフォーマンス問題の解決中に、トランザクションログファイルが破損しました。
  • データベースパーティションに空き容量が足りません。

SQLデータベース「保留中のリカバリ」問題を修復する方法

SQLデータベースが「保留中のリカバリ」状態になると、一部のクエリーを利用してこの問題を解決できます。また、手動操作によって操作ミスを避けるためには、SQLデータベース自動修復ツール - MS SQL復元ツールを使ってこの問題を解決できます。

警告:手動に問題を解決する場合、SQLのクエリーを利用することが必要です。これは高い水準の専門知識が要求されます。専門家ではないと、もっと大きな問題を引き起こしてしまう可能性があります。

「保留中のリカバリ」問題を解決してSQLデータベースをスタートする3つの方法

方法1.緊急モードでSQLデータベースをマークし、強制回復を実行する

緊急モードでは、SQLデータベースを読み込み専用にし、ログ機能を無効にします。そうすると、DBAにアクセスすることだけが許可されます。緊急モードに入り、データベースの復元を実行することは、およそ全ての問題を解決可能で、問題が解決されると、データベースが自動的に緊急モードから脱出します。

ALTER DATABASE [DBName] SET EMERGENCY;

GO

ALTER DATABASE [DBName] set single_user

GO

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;

GO

ALTER DATABASE [DBName] set multi_user

GO

方法2.緊急モードでSQLデータベースをマークし、メインデータベースの接続を切ってから再接続

この方法によって、破損したSQL Serverのログファイルを廃棄して、新しいものを生成します。

ALTER DATABASE [DBName] SET EMERGENCY;

ALTER DATABASE [DBName] set multi_user

EXEC sp_detach_db ‘[DBName]’

EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’

方法3.SQLデータベース「保留中のリカバリ」問題の自動修復法

上記のいずれかの方法に従ってが、SQLデータベース「保留中のリカバリ」問題を手動的に解決できますが、SQLに詳しくて操作ミスを避けることができる時にのみ適用されます。そうではない場合、この部分で紹介するSQLデータベース修復ソフトでSQLデータベース「保留中のリカバリ」問題を自動に修復する方法がおすすめです。

ステップ1.MS SQL Server serviceを中止

Windows + Rを同時に押して、「ファイルを指定して実行」を開きます。
services.msc」を入力してエンターキーを押してサービスを開きます。
SQL Server」項目を見つけ、右クリックして「停止」をクリックします。

ステップ2.破損したデータベースファイルを選択します。

EaseUS MS SQL Recoveryを立ち上げ > 「..」ボタンまたは「検索」をクリックすることで破損のデータベースファイルを選択

ステップ3.破損したデータベースファイルを修復

データベースファイルを選択した後、「スキャン」をクリックしてデータベースを分析し、「修復」ボタンをクリックすることで修復プロセスを開始させます。

ステップ4.修復したデータベースファイルをプレビュー&保存

このソフトはすべての復元可能なアイテムを表示します。(アイテムは左のパネルで表示する)
復元したいアイテムを選択して、直接にデータベースにエクスポートするか、SQLスクリプトとしてエクスポートするかを選択して、「OK」ボタンをクリックします。

ご案内:復元してきたアイテムをMDF形式に保存することに失敗する場合 CSV、HTML、XLSファイルに保存してください。

上記のステップに従って、破損したMDF/NDFファイルを修復することが可能です。