Loading...

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

# 日本語訳(HTML構造・コード・画像リンク完全保持)

はじめに

SQL Serverデータベースが誤削除、破損、ハードウェア障害、ランサムウェアによって利用不能になると、業務全体が停止してしまいます。幸い、正常なバックアップファイルが存在すれば、SQL Serverにはデータベースを復元し、迅速に業務を再開する複数の手段が用意されています。

本ガイドでは、SQL Server管理ツール(SSMS)とT-SQLコマンドの2種類を用いたMSSQLデータベースのバックアップからの復元方法を解説します。以下の内容を習得できます。

  • .bakファイルからMSSQLデータベースを復元する方法
  • SSMSを使用してバックアップからSQLデータベースを復元する手順
  • クエリを利用したSQL Serverデータベース復元方法
  • 別サーバーへデータベースを復元する手順
  • よく発生する復元失敗のトラブルシューティング
  • 企業向けSQL Server復元のベストプラクティス

DBA、システム管理者、ITエンジニア問わず、本チュートリアルには即時実行可能な実務的な手順が記載されています。

MSSQLデータベースをバックアップから復元する方法

簡単な手順概要

バックアップファイルからMSSQLデータベースを復元する方法は以下の通りです。

SSMSを使用する場合

  1. SQL Server管理ツール(SSMS)を起動する
  2. データベースを右クリック
  3. データベースの復元を選択
  4. デバイスを選択し、.bakファイルを指定する
  5. 復元対象のバックアップセットを選択
  6. 復元オプションを設定
  7. OKをクリックして復元を実行

T-SQLを使用する場合

SQL
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH RECOVERY;

具体的な手順は、元のサーバーへ復元するか、新規サーバーへ移行するか、または特定時点復元を行うかによって異なります。

SQL Serverデータベース復元とは何か

データベース復元とは、バックアップファイルからSQL Serverデータベースを回復し、利用可能な状態に戻す処理を指します。

復元処理は主に以下の用途で実施されます。

  • 誤って削除したデータの回復
  • データベース破損の修復
  • 意図しない変更の巻き戻し
  • 別サーバーへのデータベース移行
  • ランサムウェア攻撃からの復旧
  • システム障害後の業務サービス復帰

検証済みのバックアップ・復元方針を定めていない場合、組織は長時間の業務停止や恒久的なデータ損失のリスクを負うことになります。

バックアップからSQLデータベースを復元する必要がある状況

データベース復元が必要となる代表的なケースは以下の通りです。

データの誤削除

ユーザーがテーブル、レコード、重要な業務データを誤って削除した場合。

データベースの破損

ストレージ障害、ソフトウェア不具合、予期せぬシャットダウンによりデータベースファイルが破損するケース。

サーバー障害

ハードウェアクラッシュにより本番データベースが利用不可となる場合。

ランサムウェアからの復旧

攻撃者がデータベースファイルを暗号化するため、クリーンなバックアップから復元する必要が生じる。

データベース移行

管理者がサーバーや環境間でワークロードを移行する際、.bakファイルからMSSQLデータベースを復元する作業が頻繁に発生します。

SSMSを使用してBAKファイルからMSSQLデータベースを復元する方法

管理者が最も多く利用する標準的な手法です。

手順1:SQL Server管理ツール(SSMS)を起動

SSMSを開き、復元先のSQL Serverインスタンスに接続します。

SQL Serverへの接続

手順2:データベース復元ウィザードを開く

オブジェクトエクスプローラーで以下を実行します。

  1. サーバーインスタンスを展開
  2. データベースを右クリック
  3. データベースの復元を選択

データベース復元ウィザードを開く

手順3:バックアップファイルを選択

ソース欄にて以下を操作します。

  • デバイスを選択
  • 参照ボタン(…)をクリック
  • 追加を選択
  • .bakファイルを指定

例:

D:\Backup\SalesDB.bak

バックアップファイルを選択すると、SQL Serverが自動的に利用可能なバックアップセットを検出します。

データベース復元画面でバックアップファイルを選択

手順4:バックアップセットを選択

復元対象のバックアップセットにチェックを入れます。

以下の項目を確認してください。

  • バックアップ作成日時
  • データベース名
  • バックアップ種別

必ず正しいバックアップ世代を選択して復元するようにしてください。

手順5:復元オプションを設定

「オプション」タブへ切り替えます。

よく使用する設定は以下の通りです。

既存のデータベースを上書き

以下の項目にチェックを入れます。

既存のデータベースを上書きする(WITH REPLACE)

現在のデータベースが完全に置き換わるため、このオプションは慎重に使用してください。

データファイルの再配置

別サーバーへ復元する場合は、以下のファイルの新しい保存先を指定します。

MDFファイル
LDFファイル

例:

D:\SQLData\
D:\SQLLogs\

復旧状態

いずれか1つを選択します。

オプション 説明
RECOVERY 復元完了後、即時データベースを利用可能にする
NORECOVERY 追加のバックアップファイルを連続で復元できる状態に保持
STANDBY 復元作業の合間に読み取り専用でアクセス可能

手順6:復元を実行

OKをクリックします。

SSMSがデータベースの復元処理を開始します。

処理完了時には以下のメッセージが表示されます。

データベースの復元が正常に完了しました。

手順7:データベースの検証

以下の項目を確認します。

  • データベースの状態がオンラインになっている
  • テーブルに正常にアクセスできる
  • アプリケーションが接続可能

簡易検証用クエリを実行します。

SQL
SELECT name
FROM sys.tables;

クエリを使用したSQL Serverデータベース復元方法

スクリプト化による再実行や自動化が可能なため、多くの管理者がT-SQLコマンドを利用します。

クエリによるデータベース復元を実施したい場合は、以下のサンプル構文を使用します。

基本的な復元コマンド

SQL
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH RECOVERY;

既存データベースを上書きして復元

SQL
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH REPLACE,
RECOVERY;

BAKファイルから別サーバーへMSSQLデータベースを復元する方法

まず論理ファイル名を確認します。

SQL
RESTORE FILELISTONLY
FROM DISK = 'D:\Backup\SalesDB.bak';

その後MOVE句を使用して復元を実行します。

SQL

RESTORE DATABASE SalesDB
FROM DISK = ‘D:\Backup\SalesDB.bak’
WITH MOVE ‘SalesDB_Data’
TO ‘D:\SQLData\SalesDB.mdf’,

MOVE ‘SalesDB_Log’
TO ‘D:\SQLLogs\SalesDB.ldf’,

RECOVERY;

本手法はテスト環境、災害復旧環境、データベース移行時に広く活用されます。

完全バックアップ・差分バックアップ・トランザクションログバックアップを組み合わせたSQLデータベース復元方法

本番環境における復元作業では、複数のバックアップファイルを連続して使用するケースが一般的です。

復元シーケンス例:

手順1:完全バックアップを復元

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

手順2:差分バックアップを復元

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

手順3:トランザクションログを復元

SQL
RESTORE LOG SalesDB
FROM DISK='D:\Backup\Log.trn'
WITH NORECOVERY;

手順4:復旧処理を完了

SQL
RESTORE DATABASE SalesDB
WITH RECOVERY;

この復元手順によりデータ損失を最小限に抑え、短いRPO(目標復旧時点)を実現できます。

SQL Server復元で頻出するエラーと解決策

経験豊富なDBAでも復元処理の失敗に遭遇することがあります。

エラー:データベースが現在使用中です

原因

データベースにアクティブな接続が存在する状態。

解決策

SQL
ALTER DATABASE SalesDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

上記コマンドを実行してから復元を実施し、完了後にデータベースを複数ユーザーモードに戻します。

エラー:アクセスが拒否されました

原因

SQL Serverサービスアカウントに、バックアップファイルの読み取り権限が付与されていない。

解決策

.bakファイルの格納フォルダに対し、サービスアカウントに読み取りアクセス権を付与します。

エラー:データベースが既に存在します

原因

復元先と同名のデータベースがサーバー上に存在する。

解決策

以下のオプションを追加するか、別名のデータベースとして復元します。

SQL
WITH REPLACE

エラー:データベースが復元中状態のまま停止する

原因

復元シーケンスの最後に復旧完了コマンドを実行していない。

解決策

SQL
RESTORE DATABASE SalesDB
WITH RECOVERY;

エラー:ファイルパスに復元できません

原因

元のデータファイルのパスが復元先サーバーに存在しない。

解決策

MOVEオプションを使用し、MDF・LDFファイルの保存先を再指定します。

別サーバーへMSSQLデータベースを復元する活用シナリオ

本番データベースを以下の環境へ移行する際に多用されます。

  • 新しいハードウェアサーバー
  • テスト環境
  • 災害復旧サイト
  • クラウド上のSQL Serverインスタンス

推奨される作業フローは以下の通りです。

  1. 完全バックアップを作成
  2. .bakファイルを移行先へ転送
  3. 論理ファイル名を確認
  4. MOVE句を記述して復元実行
  5. アプリケーションの接続疎通を検証

インフラ更新や災害復旧検証時に標準的に使用される手法です。

SQL Serverバックアップ・復元のベストプラクティス

障害発生後の確実な復旧は、事前の準備に左右されます。

文書化されたバックアップ方針を定め、以下の要素を含めるようにします。

  • 定期的な完全バックアップ
  • 差分バックアップの実施
  • トランザクションログバックアップ
  • 定期的な復元検証テスト
  • オフサイトへのバックアップ保管
  • バックアップファイルの暗号化
  • 改ざん不可なバックアップ複製の保管

最も重要なポイントは定期的に復元テストを実施することです。一度も復元確認していないバックアップは、正常に復旧できると保証できません。

企業向けバックアップソフトによるSQL Server復元の簡略化

SQL Serverに標準搭載のバックアップ・復元機能は存在しますが、大規模企業環境ではより高速な復旧、一元管理、運用効率の向上が求められます。

手動でバックアップジョブや復元手順を管理する代わりに、専用のバックアッププラットフォームを導入することで、障害発生時の復旧準備性を高め、業務停止時間を短縮できます。

60日間無料トライアル

i2Backupは物理・仮想・クラウド環境を跨いだSQL Serverの自動バックアップと高速データベース復元に対応し、組織のRPO短縮、RTO削減、安定した災害復旧を実現します。

MSSQLデータベースのバックアップ復元に関するよくある質問

バックアップファイルからMSSQLデータベースを復元するにはどうすれば良いですか?

SSMSを起動し、データベースの復元を選択、.bakファイルを指定して復元オプションを設定後、復元処理を実行します。

クエリを使用してSQL Serverデータベースを復元する方法は?

RESTORE DATABASE構文を使用します。

SQL
RESTORE DATABASE SalesDB
FROM DISK='D:\Backup\SalesDB.bak'
WITH RECOVERY;

BAKファイルから別サーバーへMSSQLデータベースを復元できますか?

可能です。RESTORE FILELISTONLYで論理ファイル名を確認し、MOVEオプションで新しいファイルパスを指定して復元します。

RECOVERYとNORECOVERYの違いは何ですか?

RECOVERY:復元完了後、即時データベースを利用可能にする。

NORECOVERY:データベースを利用不可状態に保持し、追加のバックアップを連続で復元できる。

SQL Serverデータベースが復元中状態から解除されない原因は?

復元シーケンスの最終復旧処理を実行していないことが主な原因です。以下のコマンドを実行してください。

SQL
RESTORE DATABASE データベース名
WITH RECOVERY;

SSMSを使用せずにバックアップからSQLデータベースを復元できますか?

可能です。SQL ServerはT-SQLコマンドのみで完全なバックアップ・復元処理に対応しており、スクリプトによる自動化が実施できます。

まとめ

バックアップからMSSQLデータベースを復元する方法を理解することは、すべてのSQL Server管理者に必要不可欠なスキルです。.bakファイルからデータベースを復元する場合、データ破損から復旧する場合、新しいサーバーへ移行する場合、完全な災害復旧計画を実行する場合を問わず、SQL ServerはSSMSとT-SQLの両方から強力な復元機能を提供します。

確実なバックアップ運用、定期的な復元テスト、エンタープライズ向け復旧ソリューションを組み合わせることで、企業は予期せぬ障害発生時の停止時間を大幅に削減し、業務継続性を確保できます。

概要は準備中です

関連記事

目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}