システムデータベースが破損して起動しない(起動トラブル):SQL Serverトラブルシューティング(13)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「システムデータベースが破損して起動しなくなった場合の対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 08(カテゴリー:起動):システムデータベースが破損して起動しない
第5回「SQL Serverの起動ログ“ERRORLOG”には、何が記録されているのか?」で、SQL Serverの起動から、使用可能になるまでのプロセスとして、まず「masterデータベース」を起動し、masterデータベースの起動が完了してから個別の「ユーザーデータベース」を起動していくことを解説しました。今回は、システムデータベースの根本となる「masterデータベース」が起動しなくなってしまった場合の事例を紹介します。
トラブルの原因を探る
エラーログを確認すると、「masterデータベースの開始に失敗」しているようです(図8-2)。
エラーログには、「指定されたファイル(=master.mdf)が見つかりません」と記述されています。masterデータベースの実体ファイルである「master.mdf」というファイルがなくなってしまったようです。
BSODが発生し、OSのファイルシステムに不整合が起きました。ただしこの時点では、不整合のあるセクターに「master.mdf」の断片が“まだ”残っていたと想定されます。そのために、起動だけはできたのでしょう。
その後、CHKDSKを行いました。CHKDSKは、ファイルシステムの整合性を保つために修復する機能を持つツールですが、不整合の状況と修復オプションによって、ファイルが消失してしまうことがあります。今回のトラブル事例では、CHKDSKを不整合を修正する「修復オプション」付きで実行した結果、master.mdfは断片しかないので不要と判断されて、消失してしまった──。SQL Serverの起動に必要なファイルである「master.mdf」が存在しないので、結果として起動できなくなってしまったということになります。
解決方法
SQL Serverのデータファイルに致命的なエラーが発生したら、バックアップからリストアする作業が必要となります。
今回のトラブル事例では、インスタンスの起動ができないので、その前処理として「システムデータベースの再構築」を行います。手順は以下の通りです。
- SQL Serverのセットアップを使って、「システムデータベースの再構築」を行う(*1)
- SQL Serverをシングルユーザモードで起動する(図8-3)
- masterデータベースのリストアを行う(*2)
- SQL Serverを再起動し、ユーザデータベースへのアクセスを確認する
- masterデータベースのバックアップ後に加えたシステム変更を再実行する
このときに必要なのが、「masterデータベース」を含むシステムデータベースのバックアップです。
データベースのバックアップとして、ユーザデータベースのみを残しているケースを時々見受けます。しかし、今回の事例のような障害が起きたら、かなり大変な事態に陥ります。もしmasterデータベースのバックアップがなかったら、ログイン情報やアタッチされていたデータベース、サーバ構成オプションなどの情報が失われてしまいます。ログインの手動再作成、ユーザデータベースのアタッチなどの復旧手順が極めて煩雑になります。このため筆者は、システムデータベースのバックアップも取ること強く推奨します。
「システムデータベースが破損して起動しない」場合の解決手順
- (普段から)「システムデータベースのバックアップ」も取るようにしておく
- エラーログを確認して、どのファイルが障害の原因か特定する
- (本例の場合は)システムデータベースの再作成を行う
- masterデータベースのバックアップをリストアする
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。
椎名 武史(しいな たけし)
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイクロソフト、「SQL Server 2016」正式版を2016年6月1日リリース
マイクロソフトは、データベースソフトウェアの最新版「SQL Server 2016」を6月1日より一般向けに出荷開始すると発表した。 - 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - クエリストアって何だ? SQL Server 2016のパフォーマンス向上に注目
2015年6月に開催されたイベント「DB tech showcase」の講演の中から、2016年にも正式版がリリースされる次期SQL Serverの目玉機能をウオッチ。 - Oracleから「SQL Server 2016」へ、マイクロソフトが移行支援策を展開
日本マイクロソフトが「SQL Server 2016」の導入支援策を発表。Oracle Databaseからの乗り換えで、ライセンスを特別価格で提供する。