Microsoft SQL Server(SQLサーバー)とは、Microsoftが開発したRDBMS(リレーショナルデータベース管理システム)です。企業サーバー向けの高機能なシステムから、組み込み系の小規模なシステムまで幅広く対応しており、Microsoft Windowsとも相性が良いので、多くの企業が利用しています。
万が一、SQLサーバーが破損した場合は、どのように復旧・復元すべきでしょうか。SQLサーバーが破損する原因や注意点について説明します。
SQLサーバーの破損原因
SQLサーバーの主な破損原因には次のようなものがあります。
- ストレージシステムの破損
- SQLサーバー自体のバグ
- 不適切なシャットダウン操作
- SQLアカウントの変更
- マルウェア攻撃
ストレージシステムの破損
SQLサーバーを長い年月使い続けていると、テーブルデータが壊れたりデータ破損が生じることがあります。データが破損するとデータの整合性が保てなくなり、SQLサーバーが正常に機能しません。
SQLサーバー自体のバグ
Microsoftは、SQLサーバーに存在するバグを更新するソフトウェアアップデートを定期的に公開しています。
バグがSQLサーバーの破損原因になることはあまり多くありませんが、警戒すべきはバグが悪用されて、SQLサーバーがサイバー攻撃を受けてしまうことです。このため、ソフトウェアアップデートは必ず適用し、バグや脆弱性を解消しておきましょう。
不適切なシャットダウン操作
オフィスビルの点検時などでサーバーの電源を落とす必要がある場合、忘れがちなのがSQLサーバー側でのサービス停止の操作です。サービス停止の操作をする前に、いきなり電源がシャットダウンしてしまうことにより、データファイルやログファイルが破損してしまう場合があります。
SQLアカウントの変更
ログインパスワードの変更は良くあることですが、SQLサーバーのサービス開始アカウントを変えるときは要注意です。
サービス稼働中にサービス開始アカウントのパスワードを変更しても、エラーが発生することはありません。一方、サービス開始アカウントのパスワードを変更した後、サービスを終了して再起動すると、起動できずにエラーになります。これは、サービスを開始するタイミングでアカウントの新しい資格情報が参照されるために、パスワードが変わってしまうとエラーと認識されるためです。
サービス開始アカウント情報を変更したことを失念して、サービス終了の操作をしてしまうことが良くあるため、注意しましょう。
マルウェア攻撃
SQLサーバーを狙った有名なサイバー攻撃の一つに「SQL Slammer」があります。「SQL Slammer」は、SQLサーバーに存在するバッファオーバーフローの脆弱性を悪用したマルウェアです。このマルウェアからのパケットにより世界規模でネットワーク障害が発生し、大問題になりました。
実は、悪用された脆弱性の修正プログラムは、マルウェアが発見される6ヶ月前には公開されていたと言います。このような脆弱性の悪用やマルウェア攻撃を避けるためにも、修正プログラムは必ず適用しましょう。
SQLサーバーの復旧・復元方法
万が一、SQLサーバーに障害が発生したときは、バックアップから復旧・復元することが基本です。
バックアップファイルから復旧・復元
SQLサーバーのデータファイルに致命的なエラーが発生したら、バックアップから復旧・復元する作業が必要となります。後述する「完全・差分のバックアップ方法」を組み合わせて、自社にあったバックアップスケジュールを組んでおきます。エラーが発生したら、取得済みのバックアップを読み込み、バックアップ時点までデータを戻す処理をします。
復旧・復元作業については、次のような項目をあらかじめ検討して決定しておきましょう。
- 復元の実行責任者
- 復元の実行方法
- 復元のテスト方法
参照SQL Server データベースのバックアップと復元/Microsoft
DBCC CHECKDBコマンドによる復旧・復元
SQLサーバーには、データベースをチェックできるコマンド「DBCC CHECKDB」が用意されています。「DBCC CHECKDB」を実行すると、チェックの後に検証結果のメッセージが表示されます。
DBCC CHECKDB(対象データベース)
GO「DBCC CHECKDB」SQLコマンド実行例
さらに「DBCC CHECKDB」が検出したエラーを修復する「REPAIR」オプションもあります。ただ、修復を実行するとデータが消失してしまうこともあるため、Microsoftでは、「DBCC CHECKDB」がエラーを検出したときは、まず既存のバックアップから復旧・復元を試みることを推奨しています。修復オプションは最終手段として利用しましょう。
参照DBCC CHECKDB (Transact-SQL)/Microsoft
SQLサーバーを復旧、復元する際の注意点
SQLサーバーを復旧・復元するときには、次のような点に留意します。
システムの状況や実行内容を把握しておく
SQLサーバーを復旧・復元するときには、いつのどの状態に復旧・復元したのかを確実に把握しておかないと、その後の運用に支障が出てしまいます。そのためにも何日の何時にバックアップを取るか、スケジュールを良く検討しておく必要があります。
例えば、毎日完全バックアップを取得するのが理想ですが、バックアップ容量が増えてしまうので週1回として、代わりに日時では差分バックアップするなどの対応が必要です。スケジュール作成後も、システムの状況やバックアップの実行内容を常に把握しておくことが大切です。
日頃からバックアップを取っておく
どのような方法でバックアップしたとしても、バックアップした時点の状態にしか復旧・復元はできません。完全バックアップを頻繁に取得するのが難しい場合も、差分バックアップなどを組み込んで、少なくとも1日に1回はバックアップすることが望まれます。
専門家に依頼した方が確実
バックアップが取得できていない場合、SQLサーバーに障害が発生した後の復旧・復元は極めて困難です。
そのようなときは、市販されているSQLサーバー向けデータベースファイルの修復ツールを活用して復旧・復元できることもあります。手順は、修復ツールをインストールし、SQLサーバー内をスキャン。破損したデータベースファイルが確認できたら”修復”ボタンを押すだけです。
ただし、万が一、修復ツールでの復旧・復元に失敗した場合、本来なら復旧・復元できたであろうデータまでも消失してしまうリスクがあります。修復ツールの実行は、データベースに大きな負荷がかかるだけでなく、不適切なデータの上書きが発生して復旧・復元すべきデータが消えてしまうことがあるのです。
このため「データの復旧・復元は1発勝負」と言われています。修復ツールの使用はリスクを伴うため、確実に復旧・復元したい場合は、まずデータ復旧・復元の専門家に相談したほうが良いでしょう。
(2023年最新版)おすすめデータ復旧業者ランキングはこちら
SQLサーバーのバックアップについて
SQLサーバーのバックアップは、バックアップ対象や方法を選択して実行できます。
バックアップ対象(データベース・トランザクションログ)
SQLサーバーのバックアップでは、データベースとトランザクションログがバックアップの対象となります。
SQLサーバーには、master・msdb・model・Resource・tempdbの各システムデータベースがあります。データベースのバックアップでは、これらのシステムデータベース本体をバックアップします。
トランザクションログは、SQLサーバーが稼働中に発生したトランザクションと変更が全て記録される重要なログファイルです。システム障害が発生した場合に、データベースを復旧・復元するのに必要なファイルです。
バックアップ方法の種類(完全・差分)
SQLサーバーのバックアップには、完全バックアップと差分バックアップとがあります。
完全バックアップ
SQL Server Management Studio・Transact-SQL・PowerShellのいずれかを使用して完全バックアップできます。
なお、差分バックアップは完全バックアップに対して行うため、必ず1回は完全バックアップをする必要があります。
参照データベースの完全バックアップの作成/Microsoft
差分バックアップ
SQL Server Management Studio・Transact-SQLのいずれかを使用して差分バックアップできます。大規模データベースの場合、完全バックアップではバックアップに時間を要し、必要容量も膨大になります。完全バックアップの作成後に変更されたデータのみを取得するのが差分バックアップです。
参照データベースの差分バックアップの作成 (SQL Server)/Microsoft
サーバーの復旧モデル(単純・完全・一括)
トランザクションをログに記録する方法・トランザクションログのバックアップを必須とするか・利用できる復元操作の種類などは、復旧モデルに基づいて行われます。
復旧モデルには単純・完全・一括の3種類があります。
単純 | 最新のバックアップ以降の変更内容は保護されません。バックアップに必要な領域が最も少ない復旧モデルです。ログバックアップは不要です。 |
---|---|
完全 | エラーの発生前など任意の時点に復旧できます。ログバックアップが必要です。 |
一括 | 完全復旧モデルを補完するための一括コピー操作を実行します。ログバックアップが必要です。 |
おすすめデータ復旧サービス・製品
技術力が高い業者の選定といっても、素人には判断が難しいです。
そこで、データ復旧サービス各社の価格、内容(対応製品)、期間や特長から比較した、おすすめのサービスを紹介します。
(2023年最新版)おすすめデータ復旧業者ランキングはこちら
デジタルデータリカバリー
サイトデジタルデータリカバリー
デジタルデータリカバリーは14年連続国内売上No.1の国内最大級のデータ復旧業者です。復旧率に関しても95.2%と業界最高水準を誇り、技術力は申し分ないといえます。
また、技術力の他に復旧スピードも非常に速く、最短当日かつ約80%が48時間以内に復旧されるというのも大きな魅力です。料金体系は成功報酬制が採用されており、診断・見積りも無料で行えるため、まずは最大手のデジタルデータリカバリーへの問合せをおすすめします。
価格 | 500GB未満:5,000円〜 500GB以上:10,000円〜 1TB以上:20,000円〜 2TB以上:30,000円〜 |
---|---|
内容(対応製品) | RAID機器(NAS/サーバー)、ハードディスク(パソコン)、外付けHDD、USBメモリ、ビデオカメラ、SSD、SDカード・MSDカードなど |
期間 | 最短当日(持ち込みの場合) 約80%が48時間以内に復旧完了 |
特長 | データ復旧専門業者で14年連続データ復旧国内売上No.1 95.2%の非常に高いデータ復旧率 累積36万件以上の相談実績 診断・見積り無料(デジタルデータリカバリーへの配送料も無料) |
<!–
データリカバリーサービス
サイトデータリカバリーサービス
データリカバリーサービスはデジタルデータリカバリーに次ぐ復旧率90.6%を誇るデータ復旧業者です。
国内をはじめ世界各国の復旧会社と情報交換・技術導入を行っているようです。少数精鋭のエンジニア集団でそれほどの規模でないながらも1万3000件以上の相談実績があり、無料診断も実施しているため、データリカバリーサービスへ問合せしてみるのもよいでしょう。
\s\n\s\n\s\n
価格 | 160GB未満:12,000円~ 160GB~500GB未満:18,000円~ 500GB~1TB未満:25,000円~ 1TB~2TB未満:36,000円~ 2TB以上:48,000円~ |
---|---|
内容(対応製品) | 外付けHDD、パソコン、SSD、USBメモリ、RAID機器(NAS/サーバー)、ビデオカメラ、SDカード、MSDカードなど |
期間 | 初期診断:最短90分 初期診断後に復旧期間を提示 |
特長 | データ復旧率90.6% 延べ13793件のご利用実績 国内外の復旧会社とコネクションを持つ少数精鋭のエンジニア集団 |
\s\n
–>
まとめ
Microsoft SQL Server(SQLサーバー)は、大規模システムから小規模なシステムまで幅広く対応できるため、今後もますます活用が進むでしょう。
同時に、SQLサーバーが破損した場合の復旧・復元方法もあらかじめ検討しておくべきです。バックアップの取得や復旧・復元の手順については、データ復旧の専門家の意見を聞きながら計画しておくことをおすすめします。