本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「システムデータベースが破損して起動しなくなった場合の対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
第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のデータファイルに致命的なエラーが発生したら、バックアップからリストアする作業が必要となります。
今回のトラブル事例では、インスタンスの起動ができないので、その前処理として「システムデータベースの再構築」を行います。手順は以下の通りです。
このときに必要なのが、「masterデータベース」を含むシステムデータベースのバックアップです。
データベースのバックアップとして、ユーザデータベースのみを残しているケースを時々見受けます。しかし、今回の事例のような障害が起きたら、かなり大変な事態に陥ります。もしmasterデータベースのバックアップがなかったら、ログイン情報やアタッチされていたデータベース、サーバ構成オプションなどの情報が失われてしまいます。ログインの手動再作成、ユーザデータベースのアタッチなどの復旧手順が極めて煩雑になります。このため筆者は、システムデータベースのバックアップも取ること強く推奨します。
ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.