技術記事 / SQL Server、ERP、レガシーシステム

SQL Server DB が「復旧保留」または「疑わしい」状態になった場合の安全な対応

Recovery Pending/Suspect は復旧処理を完了できない状態です。ファイルとログを保護し、I/O、容量、権限、エラー番号を調査します。

先に結論

Recovery Pending/Suspect は復旧処理を完了できない状態です。このケースでは、まず「SQL ERRORLOG のエラーコード」と「データ/ログファイルへのアクセス可否」を確認し、その後「ディスク容量と I/O」を基準に修正の要否を判断します。

最初に切り分ける範囲

このサーバー/データベースの事象では、まず「SQL ERRORLOG」と「データ/ログファイルへのアクセス可否」で障害境界を決め、その後「ディスク容量と I/O」へ進みます。本番設定を変更する前に、現状、発生時刻、正常な比較対象を記録します。

依存関係に沿った確認順序

確認項目確認する理由推奨アクション
01 · SQL ERRORLOG のエラーコードSQL ERRORLOG のエラーコード を、設定値だけで判断せず、ログ、カウンター、状態情報で実経路上から確認します。SQL ERRORLOG のエラーコード の現在値、証跡元、時刻を記録します。変更が必要な場合は一度に一条件だけ変更し、切り戻し用に元の設定を保持します。
02 · データ/ログファイルへのアクセス可否データ/ログファイルへのアクセス可否 を、設定値だけで判断せず、ログ、カウンター、状態情報で実経路上から確認します。データ/ログファイルへのアクセス可否 を読み取り中心で確認し結果を保存します。基準との差がある場合は、障害時刻と直近変更との関係を確認してから修正します。
03 · ディスク容量と I/Oディスク容量と I/O を、設定値だけで判断せず、ログ、カウンター、状態情報で実経路上から確認します。ディスク容量と I/O を正常系、ログ時系列、実際の業務経路と比較し、原因であることを確認してから本番設定を変更します。
04 · サービスアカウントの権限サービスアカウントの権限 の現在値、関連ログ、直近の変更を確認し、障害発生時刻と突き合わせて変更要否を判断します。サービスアカウントの権限 の現在値、証跡元、時刻を記録します。変更が必要な場合は一度に一条件だけ変更し、切り戻し用に元の設定を保持します。
05 · バックアップの復元可能性バックアップの復元可能性 の現在値、関連ログ、直近の変更を確認し、障害発生時刻と突き合わせて変更要否を判断します。バックアップの復元可能性 を読み取り中心で確認し結果を保存します。基準との差がある場合は、障害時刻と直近変更との関係を確認してから修正します。
06 · 破壊的修復を避けるための保護策破壊的修復を避けるための保護策 の現在値、関連ログ、直近の変更を確認し、障害発生時刻と突き合わせて変更要否を判断します。破壊的修復を避けるための保護策 を正常系、ログ時系列、実際の業務経路と比較し、原因であることを確認してから本番設定を変更します。
読み取り確認の例
SELECT name, state_desc FROM sys.databases;

根拠を確認してから変更する

  1. まず読み取り中心で証跡を取得し、設定変更前に「SQL ERRORLOG のエラーコード」と「データ/ログファイルへのアクセス可否」を確認します。
  2. 最初の確認が正常なら「ディスク容量と I/O」と「サービスアカウントの権限」へ進み、障害時刻と結び付く証跡を残します。
  3. 証跡が症状を説明できる場合に限って設定を変更します。「バックアップの復元可能性」を変更する前に元の値と切り戻し条件を定義します。
  4. 「破壊的修復を避けるための保護策」は限定範囲で検証してから、本番ユーザーまたは本番トラフィックへ展開します。

復旧確認と切り戻し

  • ユーザーまたはアプリケーションの一連の業務動作を確認し、「SQL ERRORLOG のエラーコード」単独の状態だけで完了としません。
  • 変更後に「バックアップの復元可能性」と「破壊的修復を避けるための保護策」を再確認し、新たな迂回、権限拡大、二次障害がないことを確認します。
  • 「SQL ERRORLOG のエラーコード」から「破壊的修復を避けるための保護策」までの証跡、変更前後の設定、業務確認結果、切り戻し点を保存します。

よくある誤判断

  • 「SQL ERRORLOG」と「データ/ログファイルへのアクセス可否」を同時に変更し、どちらが原因だったか追跡できなくすること。
  • 「ディスク容量と I/O」が正常というだけで、「サービスアカウントの権限」を含む業務経路全体も正常と判断すること。
  • 「バックアップの復元可能性」または「証跡を確保する前に破壊的な修復を実行しない」の一時例外を、責任者・期限・切り戻し記録なしで本番に残すこと。

関連する確認事項

「SQL Server DB が「復旧保留」または「疑わしい」状態になった場合の安全な対応」はどこから確認すべきですか?

まず「SQL ERRORLOG のエラーコード」と「データ/ログファイルへのアクセス可否」を確認します。本番状態を変えずに最初の切り分け境界を作れます。

最初の層が正常な場合、次に何を確認しますか?

次に「ディスク容量と I/O」と「サービスアカウントの権限」を確認し、障害時刻および実際のユーザー/アプリ経路と突き合わせます。

変更後に何を残すべきですか?

「バックアップの復元可能性」と「破壊的修復を避けるための保護策」の証跡に加え、元の設定、検証結果、観察記録、切り戻し点を保存します。

前の記事SQL Server が起動数秒後に停止する場合の ERRORLOG、サービスアカウント、master、tempdb 調査次の記事Hyper-V チェックポイントがバックアップの代わりにならない理由と復元受入試験

実環境に合わせた判断が必要ですか。