2026年5月1日金曜日

SQL Server バックアップとリストアの基本|完全・差分・トランザクションログバックアップの実務

データを確実に守るために。SQL Serverバックアップとリストアの基本を徹底解説

SQL Serverを運用するうえで最も重要なのがバックアップとリストアです。
ハード障害や誤操作、災害などでデータが失われた場合に、正しく復元できる仕組みを構築しておくことが不可欠です。
この記事では、完全バックアップ・差分バックアップ・トランザクションログバックアップの仕組みと実務での運用方法を、初心者向けにわかりやすく解説します。

目次

SQL Serverのバックアップとは?

バックアップの目的

バックアップとは、データベースを特定時点の状態で保存しておくことです。
障害や誤削除などが発生した際、バックアップファイルをもとに復旧(リストア)することで業務を再開できます。

バックアップの種類

SQL Serverでは、データの種類と復旧目的に応じて複数のバックアップ形式を選択できます。

  • 完全バックアップ(Full):データベース全体を保存
  • 差分バックアップ(Differential):最後の完全バックアップ以降の変更分を保存
  • トランザクションログバックアップ(Log):データ更新履歴を保存

これらを組み合わせることで、最小限のデータ損失で迅速に復旧できる構成を実現します。

完全・差分・トランザクションログバックアップの違い

バックアップ種類ごとの概要

種類 対象範囲 特徴 復旧に必要な組み合わせ
完全バックアップ データベース全体 最初に必ず取得する基礎バックアップ 単体または差分+ログと組み合わせ
差分バックアップ 最後の完全バックアップ以降の変更分 完全より軽量・短時間で取得可能 最新の完全+最新の差分+必要なログ
トランザクションログバックアップ 更新履歴(ログ) 最小のデータ損失で復元可能 完全+差分+ログ(連続)

バックアップ構成イメージ


完全バックアップ(Full) ──► 差分バックアップ(Differential)
       │
       ├─► トランザクションログバックアップ(Log)
       ├─► トランザクションログバックアップ(Log)

定期的な完全バックアップ+毎日の差分+数時間ごとのログ、という構成が一般的です。

バックアップの取得方法(GUIとT-SQL)

① SSMS(GUI)から実行

SQL Server Management Studio(SSMS)を使用すると、GUI操作で簡単にバックアップできます。

  1. 対象データベースを右クリック → [タスク] → [バックアップ]
  2. バックアップの種類(完全・差分・ログ)を選択
  3. 保存先パスを指定し、[OK]

② T-SQLで実行

スクリプト化して定期実行する場合はT-SQLが便利です。


-- 完全バックアップ
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Full.bak'
WITH INIT, COMPRESSION;

-- 差分バックアップ
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Diff.bak'
WITH DIFFERENTIAL, COMPRESSION;

-- トランザクションログバックアップ
BACKUP LOG SalesDB
TO DISK = 'D:\Backup\SalesDB_Log.trn'
WITH COMPRESSION;

COMPRESSIONオプションを付けると、バックアップサイズを大幅に削減できます。

バックアップ運用のベストプラクティス

  • スケジュール化:SQL Server Agent ジョブで自動実行
  • 世代管理:一定期間を過ぎたバックアップを自動削除
  • オフサイト保管:別サーバー・クラウド(Azure Blobなど)へコピー
  • 検証:定期的にリストアテストを行い、復元可能性を確認
  • 圧縮と暗号化:ディスク容量とセキュリティを両立

運用現場では、**「取得すること」より「復元できること」** が重要です。 定期的にリストアテストを実施し、確実に復旧できる構成を保ちましょう。

リストアの基本手順と注意点

① 完全バックアップからの復元


RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB_Full.bak'
WITH NORECOVERY;

NORECOVERYは、差分やログを続けて適用する場合に指定します。

② 差分バックアップの適用


RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB_Diff.bak'
WITH NORECOVERY;

③ トランザクションログの適用


RESTORE LOG SalesDB
FROM DISK = 'D:\Backup\SalesDB_Log.trn'
WITH RECOVERY;

最後に WITH RECOVERY を指定して、データベースをオンライン状態に戻します。

④ 注意点

  • リストア順序を誤るとエラーになる(完全→差分→ログの順)
  • ログバックアップは連続性が重要(欠損があると復元不可)
  • 復旧モデルが「Simple」の場合はログバックアップ不可

まとめと次のステップ

学んだ内容の整理

  • バックアップは完全・差分・ログの3種類を組み合わせて運用する。
  • 定期スケジュール化とオフサイト保管で障害に備える。
  • リストア順序を守ることが復旧成功の鍵。
  • 「取得」だけでなく「復元テスト」までがバックアップ運用の基本。
SQL Server学習シリーズ
◀ 【第7回】サーバー設定と構成管理(sp_configure)
【第9回】リカバリモデルの選び方(SIMPLE/FULL/BULK_LOGGED) ▶
目次へ

参考リンク

SQL Server 解説用イメージ

0 件のコメント:

コメントを投稿