Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

1つの誤ったクエリで重要なデータが瞬時に消去される可能性があります。SQL Serverの特定時点リカバリを活用すれば、ミスが発生する直前の時刻にデータベースを正確に復元可能で、余分なデータ損失を防げます。

本ガイドでは、バックアップ復元から目標とする正確なタイムスタンプの指定まで、完全なリカバリ手順を解説します。

SQL Serverにおける特定時点リカバリとは

SQL Serverの特定時点リカバリは、秒単位の任意のタイムスタンプまでデータベースを復旧する復元手法です。

完全バックアップを基底とし、オプションの差分バックアップで復元範囲を縮小、最後にトランザクションログバックアップを順次再生する仕組みで動作します。鍵となるのがトランザクションログ(T-log)で、データベースに対するすべての変更履歴を記録することで、高精度な時点指定復元を実現します。

本機能を利用するには、データベースを完全復旧モデルで運用する必要があります。このモデルによりトランザクションログが常時保存され、復元処理に活用できる状態が保たれます。

補足:単純復旧モデルを使用している場合、トランザクションログが保持されないため特定時点リカバリは実行できません。

SQL Serverで特定時点リカバリを実行する手順

任意の時点へデータベースを復元するには、厳格な順序で作業を実施する必要があります。作業開始前にテールログバックアップを取得し、まだバックアップされていない最新のログ変更を保存することで最新データの損失を回避します。

BACKUP LOG YourDatabase
TO DISK = 'C:\Backups\YourDatabase_taillog.bak'
WITH NORECOVERY; 

テールログバックアップ

手順1 – 完全バックアップの復元

復元目標時刻より前に作成された最新の完全バックアップを最初に復元し、以降の復元処理の基底とします。

RESTORE DATABASE YourDatabase
FROM DISK = 'C:\Backups\YourDatabase_full.bak'
WITH NORECOVERY; 

完全バックアップ復元

  1. NORECOVERYオプションを指定し、データベースを復元中状態に維持する
  2. この段階でRECOVERYは使用しないでください。データベースがオンライン状態になり、復元シーケンスを最初からやり直す必要が生じます。

手順2 – 差分バックアップの復元(オプション)

完全バックアップと復元目標時刻の間に差分バックアップが存在する場合は、続けて適用します。

RESTORE DATABASE YourDatabase
FROM DISK = 'C:\Backups\YourDatabase_diff.bak'
WITH NORECOVERY; 

差分バックアップ復元

  1. 差分バックアップには、前回の完全バックアップ以降のすべての変更データが格納されている
  2. 差分バックアップを適用することで、再生するトランザクションログの数を削減できる
  3. こちらの手順でもNORECOVERYを指定する

手順3 – トランザクションログバックアップの復元

トランザクションログバックアップは作成された順番通りにすべて適用します。

RESTORE LOG YourDatabase
FROM DISK = 'C:\Backups\YourDatabase_log1.bak'
WITH NORECOVERY; 

 

RESTORE LOG YourDatabase
FROM DISK = 'C:\Backups\YourDatabase_log2.bak'
WITH NORECOVERY; 

トランザクションログバックアップ復元

  1. 直前の復元(完全または差分)後に作成されたログファイルから順に処理する
  2. 復元目標時刻をカバーするファイルまで1つずつログを適用する
  3. 最後のログ以外はすべてNORECOVERYを指定する
補足:ログファイルの数は自身のバックアップスケジュールに依存します。ファイルを順番通りにすべて適用する必要があり、1つでも飛ばすと復元連鎖が途切れ復旧不可となります。

手順4 – STOPATによる特定時点への復元

最後のログファイルに対する復元処理では、STOPATパラメータに目標とする正確なタイムスタンプを設定します。

RESTORE LOG YourDatabase
FROM DISK = 'C:\Backups\YourDatabase_log3.bak'
WITH RECOVERY, STOPAT = '2026-03-15T10:05:29'; 

STOPATで特定時点に復元

  1. STOPATには障害発生直前の時刻を指定します。例:10時05分30秒にトラブルが発生した場合は10時05分29秒を設定
  2. 最終手順のみNORECOVERYからRECOVERYに切り替え、データベースをオンライン状態に復帰させる
ヒント:タイムスタンプは必ず二重確認してください。障害発生時刻を超えて復元した場合、完全バックアップから復元シーケンスを最初から実行し直す必要があります。

SQL Server特定時点リカバリのベストプラクティス

安定した復旧は偶然ではなく、障害発生前に確立された堅牢なバックアップ戦略に依存します。順守すべき主要な運用ルールを記載します。

トランザクションログの高頻度バックアップ

ログバックアップの間隔が、最悪時のデータ損失量を直接決定します。15分以内を目安に実施し、大半の本番環境で1日1回のバックアップでは不十分です。

バックアップの定期的な検証

検証されていないバックアップファイルは信頼できません。専用のテスト環境で一連の復元作業を実施し、ファイルの正当性とチームが手順を把握できるか確認します。

  • 個別ファイルだけでなく、完全な復元シーケンスを通してテストする
  • 手順をドキュメントに残し、緊急時に誰でも復旧作業を実行できるようにする

統一された分かりやすいファイル命名規則の採用

データベース障害対応時に、どのログファイルがどの時間帯のデータをカバーするか推測する手間をなくすため、すべてのバックアップファイル名に日時を含めます。例:YourDB_log_20260315_1015.bak

ヒント:トランザクションログはデータファイルと物理的に別のドライブに保存します。データドライブが故障した場合でもテールログバックアップを取得でき、最新の変更データの損失を防げます。

i2BackupでSQL Server特定時点リカバリを簡素化

上記の手動手順でも復元は可能ですが、複数のデータベースやサーバーのバックアップ系列を管理すると運用負荷が大幅に増加します。緊急時にログの適用順番を間違えたりテールログバックアップを忘れたりする人的ミスのリスクも高まります。i2Backupはこの一連のフローを自動化し、人的エラーの要因を低減します。

  • 集中管理機能:Webベースの管理画面を搭載し、すべてのバックアップスケジュールを一元制御可能。IT担当者はタスク進捗とシステム状態をリアルタイム監視でき、状況把握が容易です。
  • 継続的ログ取得:リドログ・アーカイブログを常時収集することでRPOをほぼゼロに抑え、高精度で任意の秒時点への復元に対応します。
  • 柔軟な復元オプション:データベース全体ではなく特定レコードのみ復元し時間を短縮可能。元のホストまたは代替サーバーへの復元にも対応し、運用ニーズに合わせて選択できます。
  • 自動データライフサイクル管理:バックアップ作成から削除までの全プロセスを制御。カスタマイズ可能な保存期間ポリシーにより古いバックアップを自動削除し、ストレージ領域を最適化し整理された状態を保ちます。
  • マルチプラットフォーム対応:SQL Server以外にWindows、Linux、VMwareなど各種仮想化環境に対応。多種多様な企業IT基盤のデータ保護に活用できる汎用的なソリューションです。

大規模なSQL Server環境を管理するチームにとって、i2Backupは特定時点リカバリに伴う手作業の負担を大幅に削減し、本来の業務に集中できる環境を提供します。

60日間無料トライアル

よくある質問

Q1:バックアップと特定時点リカバリの違いは何ですか?

A:バックアップは特定瞬間のデータベーススナップショットのことです。特定時点リカバリは、バックアップとトランザクションログを組み合わせ、バックアップ取得時以外の任意のタイムスタンプまでデータを復元するプロセスを指します。

 

Q2:SQLの3種類の主要バックアップとは?

A:完全バックアップ、差分バックアップ、トランザクションログバックアップの3種類です。完全バックアップはデータベース全体を保存し、差分バックアップは前回完全バックアップ後の変更分のみを記録、トランザクションログバックアップは個々の処理履歴を保存し特定時点リカバリを実現する基盤となります。

 

Q3:SQL Serverの「復元中」とはどういう状態ですか?

A:データベースがトランザクションログを適用しており、ユーザーが利用できない状態を指します。復元処理中の正常な状態であり、すべてのログ適用後にRECOVERY付き復元コマンドを実行するとデータベースがオンラインになります。

 

Q4:すべてのトランザクションログバックアップを復元する必要がありますか?

A:はい、順番通りにすべて適用する必要があります。1つでもファイルを飛ばすと復元連鎖が途切れ、目標時点まで復旧できなくなります。

 

Q5:SQL Serverデータベースをどれくらい過去まで復元可能ですか?

A:バックアップファイルの保存期間に依存します。復元したい過去時点まで連続した完全・差分・ログバックアップの系列が存在する限り、その時間範囲内の任意の時点に復旧できます。

 

Q6:RECOVERYを早い段階で使用したらどうなりますか?

A:データベースが即時オンラインになり、復元シーケンスが強制終了します。それ以降のトランザクションログを適用できなくなるため、目標時点に達していない場合は完全バックアップから復元作業をやり直す必要があります。

まとめ

SQL Serverの特定時点リカバリはDBAにとって最も重要なツールの1つです。誤ったクエリ、意図しないデータ削除、予期せぬシステムクラッシュなどのトラブル発生時に、必要以上のデータ損失なく正確にデータを回復する手段を提供します。

復元の流れは4段階に整理できます:完全バックアップを復元、差分バックアップが存在する場合は適用、トランザクションログを順次再生、STOPATで目標時点を指定。正しく実施すれば制御された予測可能な復旧処理となります。

複数のデータベースを管理し手動作業のリスクを低減したい場合は、i2Backupのようなツールで大半の工程を自動化可能です。復旧作業の手間を削減し、本来の業務にリソースを集中させられます。

概要は準備中です

関連記事

# 【3つの実用的な手法】SQL Serverにおけるデータベースダンプの実施方法
SQL Serverにおけるデータベースダンプは、バックアップ、環境移行、災害復旧に活用されます。本ガイドではダンプの定義と、複数の汎用手法によるSQL Serverデータベースの出力・復元手順を解説します。
記事を読む
【3つの安全な手法】SQL Serverデータベース名を変更する方法
SQL Serverのデータベース名変更は単純な作業ですが、手順を誤るとエラーが発生します。本ガイドではSSMS、T-SQL、デタッチ&アタッチによる3種類のデータベース名変更手法と、頻出エラーの解決策を解説します。
記事を読む
SQLテーブルデータをExcelにエクスポートする方法:ステップバイステップガイド
SQLテーブルデータを迅速かつ正確にExcelへエクスポートする必要がありますか。本ガイドではSSMSからPythonまで、4つの実用的な方法を解説しており、業務フローに最適な手法を選択できます。
記事を読む
SQL Serverデータベースが復元状態でスタックした場合の6つの効果的な解決策
SQLデータベースが復元モードのままになるトラブルが発生すると、データベースの復元作業が中断し、通常業務に影響を及ぼします。本記事では代表的な発生原因を解説し、当該問題を効率的に診断・解決する6つの実用的な手法を紹介します。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}