ユーザーデータベースが破損して起動しない(起動トラブル):SQL Serverトラブルシューティング(14)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「ユーザーデータベースが破損して起動しなくなった場合の対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 09(カテゴリー:起動):ユーザーデータベースが破損して起動しない
前回のmasterデータベースに起因した起動トラブルに続いて、今回は「ユーザーデータベース」に起因する起動障害について紹介します。
トラブルの原因を探る
エラー824は、「SQL Serverのデータが破損している」「データに不整合がある」ときに示されます。SQL Serverは8KBの「ページ」という単位でデータを保存しています。このページ内のチェックサムと実際のデータを付き合わせて、不整合があるとエラー824が出力されます。
また、再起動を行っても現象が解消せず、むしろ悪化していることを考えると、この障害はメモリ上のみで発生した破損ではなく、ディスクに保存されているユーザーデータベースのデータそのものが破損してしまったことが分かります。
解決方法
ユーザーデータベースが破損してしまったら、あらかじめ取得してあったデータベースのバックアップからリストアします。完全復旧モデルを利用している場合の手順は以下の通りです。
- データベースの「現在のトランザクションログ」のバックアップを取得する
- 全てのユーザーセッションを切断し、接続しないように調整する
- データベースのリストアをWITH NORECOVERYオプション付きで実行する
- 保存してあるトランザクションログのリストアをWITH NORECOVERYオプション付きで実行する
- (1)で取得したトランザクションログのリストアをWITH RECOVERYオプション付きで実行する
- データアクセスを確認する
データアクセスの確認には、アプリケーションの動作確認の他に、SQL Serverの機能を使って全体的に問題がないかを確認する「DBCC CHECKDB」を使います。DBCC CHECKDBを実行し、問題がないことを確認することでリストアしたデータベースの整合性が保証されたことになります(図9-3)。
ちなみに、データ不整合エラーであるエラー824は、破損箇所へSQL Serverがアクセスしてはじめて発覚します。そのため、その時点で破損しているのが1カ所だけとは限りません。データベースの他の箇所が壊れている可能性もあります。
エラー824が“今のところ”業務に大きな影響を与えていないとしても、決して放置してはいけません。もし管理領域も壊れていたならば破損がさらに広がってしまいます。早期の対処を推奨します。
「ユーザデータベースが破損して起動しない」場合の解決手順
- エラーログを確認して破損しているデータベースを確認する
- データベースバックアップのリストアを行い、データベースを復旧する
- DBCC CHECKDB、アプリケーションの動作確認を通じて整合性確認を行う
(コラム)実務の現場から
筆者は10年以上データベースサポートの仕事をしていますが、これまでに何度かデータベースの破損が業務に大きく影響を及ぼしてしまったケースに遭遇しました。
中には……バックアップさえ取られていないケースもありました。この復旧には大変な労力を要しました。このケースでは、運よく数日前に開発システムへデータを移動したばかりだったので、まずそれを戻して、差分は紙の注文書をデータ化する力業で復旧させたのです。
そのようなことが起こらないよう、バックアップを取ることはもちろんですが、それに加えて、普段から「バックアップが正しく取得されていることを確認」するルーティンを設けることを強くお勧めします。
実は、取得したバックアップが本当に有効であるかを確認するには、「実際にリストアしてみる」しかありません。できれば運用の中に、本番系から開発系へのデータベース移動を組み込んで、「バックアップの有効性を確認する仕組み」も取り入れていただきたいと思います。
この「バックアップを採取していなかったとき」のトラブルシューティングについては、別の回で紹介したいと思います。
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社所属。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からの乗り換えで、ライセンスを特別価格で提供する。