Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
# 日本語訳(HTML構造・コード・画像リンク完全保持)
SQL Serverデータベースが誤削除、破損、ハードウェア障害、ランサムウェアによって利用不能になると、業務全体が停止してしまいます。幸い、正常なバックアップファイルが存在すれば、SQL Serverにはデータベースを復元し、迅速に業務を再開する複数の手段が用意されています。
本ガイドでは、SQL Server管理ツール(SSMS)とT-SQLコマンドの2種類を用いたMSSQLデータベースのバックアップからの復元方法を解説します。以下の内容を習得できます。
DBA、システム管理者、ITエンジニア問わず、本チュートリアルには即時実行可能な実務的な手順が記載されています。
バックアップファイルからMSSQLデータベースを復元する方法は以下の通りです。
SSMSを使用する場合
T-SQLを使用する場合
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH RECOVERY;
具体的な手順は、元のサーバーへ復元するか、新規サーバーへ移行するか、または特定時点復元を行うかによって異なります。
データベース復元とは、バックアップファイルからSQL Serverデータベースを回復し、利用可能な状態に戻す処理を指します。
復元処理は主に以下の用途で実施されます。
検証済みのバックアップ・復元方針を定めていない場合、組織は長時間の業務停止や恒久的なデータ損失のリスクを負うことになります。
データベース復元が必要となる代表的なケースは以下の通りです。
データの誤削除
ユーザーがテーブル、レコード、重要な業務データを誤って削除した場合。
データベースの破損
ストレージ障害、ソフトウェア不具合、予期せぬシャットダウンによりデータベースファイルが破損するケース。
サーバー障害
ハードウェアクラッシュにより本番データベースが利用不可となる場合。
ランサムウェアからの復旧
攻撃者がデータベースファイルを暗号化するため、クリーンなバックアップから復元する必要が生じる。
データベース移行
管理者がサーバーや環境間でワークロードを移行する際、.bakファイルからMSSQLデータベースを復元する作業が頻繁に発生します。
管理者が最も多く利用する標準的な手法です。
手順1:SQL Server管理ツール(SSMS)を起動
SSMSを開き、復元先のSQL Serverインスタンスに接続します。
手順2:データベース復元ウィザードを開く
オブジェクトエクスプローラーで以下を実行します。
手順3:バックアップファイルを選択
ソース欄にて以下を操作します。
例:
D:\Backup\SalesDB.bak
バックアップファイルを選択すると、SQL Serverが自動的に利用可能なバックアップセットを検出します。
手順4:バックアップセットを選択
復元対象のバックアップセットにチェックを入れます。
以下の項目を確認してください。
必ず正しいバックアップ世代を選択して復元するようにしてください。
手順5:復元オプションを設定
「オプション」タブへ切り替えます。
よく使用する設定は以下の通りです。
既存のデータベースを上書き
以下の項目にチェックを入れます。
既存のデータベースを上書きする(WITH REPLACE)
現在のデータベースが完全に置き換わるため、このオプションは慎重に使用してください。
データファイルの再配置
別サーバーへ復元する場合は、以下のファイルの新しい保存先を指定します。
MDFファイル
LDFファイル
例:
D:\SQLData\
D:\SQLLogs\
復旧状態
いずれか1つを選択します。
| オプション | 説明 |
|---|---|
| RECOVERY | 復元完了後、即時データベースを利用可能にする |
| NORECOVERY | 追加のバックアップファイルを連続で復元できる状態に保持 |
| STANDBY | 復元作業の合間に読み取り専用でアクセス可能 |
手順6:復元を実行
OKをクリックします。
SSMSがデータベースの復元処理を開始します。
処理完了時には以下のメッセージが表示されます。
データベースの復元が正常に完了しました。
手順7:データベースの検証
以下の項目を確認します。
簡易検証用クエリを実行します。
SELECT name
FROM sys.tables;
スクリプト化による再実行や自動化が可能なため、多くの管理者がT-SQLコマンドを利用します。
クエリによるデータベース復元を実施したい場合は、以下のサンプル構文を使用します。
基本的な復元コマンド
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH RECOVERY;
既存データベースを上書きして復元
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB.bak'
WITH REPLACE,
RECOVERY;
まず論理ファイル名を確認します。
RESTORE FILELISTONLY
FROM DISK = 'D:\Backup\SalesDB.bak';
その後MOVE句を使用して復元を実行します。
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;
本手法はテスト環境、災害復旧環境、データベース移行時に広く活用されます。
本番環境における復元作業では、複数のバックアップファイルを連続して使用するケースが一般的です。
復元シーケンス例:
手順1:完全バックアップを復元
RESTORE DATABASE SalesDB
FROM DISK='D:\Backup\Full.bak'
WITH NORECOVERY;
手順2:差分バックアップを復元
RESTORE DATABASE SalesDB
FROM DISK='D:\Backup\Diff.bak'
WITH NORECOVERY;
手順3:トランザクションログを復元
RESTORE LOG SalesDB
FROM DISK='D:\Backup\Log.trn'
WITH NORECOVERY;
手順4:復旧処理を完了
RESTORE DATABASE SalesDB
WITH RECOVERY;
この復元手順によりデータ損失を最小限に抑え、短いRPO(目標復旧時点)を実現できます。
経験豊富なDBAでも復元処理の失敗に遭遇することがあります。
原因
データベースにアクティブな接続が存在する状態。
解決策
ALTER DATABASE SalesDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
上記コマンドを実行してから復元を実施し、完了後にデータベースを複数ユーザーモードに戻します。
原因
SQL Serverサービスアカウントに、バックアップファイルの読み取り権限が付与されていない。
解決策
.bakファイルの格納フォルダに対し、サービスアカウントに読み取りアクセス権を付与します。
原因
復元先と同名のデータベースがサーバー上に存在する。
解決策
以下のオプションを追加するか、別名のデータベースとして復元します。
WITH REPLACE
原因
復元シーケンスの最後に復旧完了コマンドを実行していない。
解決策
RESTORE DATABASE SalesDB
WITH RECOVERY;
原因
元のデータファイルのパスが復元先サーバーに存在しない。
解決策
MOVEオプションを使用し、MDF・LDFファイルの保存先を再指定します。
本番データベースを以下の環境へ移行する際に多用されます。
推奨される作業フローは以下の通りです。
インフラ更新や災害復旧検証時に標準的に使用される手法です。
障害発生後の確実な復旧は、事前の準備に左右されます。
文書化されたバックアップ方針を定め、以下の要素を含めるようにします。
最も重要なポイントは定期的に復元テストを実施することです。一度も復元確認していないバックアップは、正常に復旧できると保証できません。
SQL Serverに標準搭載のバックアップ・復元機能は存在しますが、大規模企業環境ではより高速な復旧、一元管理、運用効率の向上が求められます。
手動でバックアップジョブや復元手順を管理する代わりに、専用のバックアッププラットフォームを導入することで、障害発生時の復旧準備性を高め、業務停止時間を短縮できます。
i2Backupは物理・仮想・クラウド環境を跨いだSQL Serverの自動バックアップと高速データベース復元に対応し、組織のRPO短縮、RTO削減、安定した災害復旧を実現します。
バックアップファイルからMSSQLデータベースを復元するにはどうすれば良いですか?
SSMSを起動し、データベースの復元を選択、.bakファイルを指定して復元オプションを設定後、復元処理を実行します。
クエリを使用してSQL Serverデータベースを復元する方法は?
RESTORE DATABASE構文を使用します。
RESTORE DATABASE SalesDB
FROM DISK='D:\Backup\SalesDB.bak'
WITH RECOVERY;
BAKファイルから別サーバーへMSSQLデータベースを復元できますか?
可能です。RESTORE FILELISTONLYで論理ファイル名を確認し、MOVEオプションで新しいファイルパスを指定して復元します。
RECOVERYとNORECOVERYの違いは何ですか?
RECOVERY:復元完了後、即時データベースを利用可能にする。
NORECOVERY:データベースを利用不可状態に保持し、追加のバックアップを連続で復元できる。
SQL Serverデータベースが復元中状態から解除されない原因は?
復元シーケンスの最終復旧処理を実行していないことが主な原因です。以下のコマンドを実行してください。
RESTORE DATABASE データベース名
WITH RECOVERY;
SSMSを使用せずにバックアップからSQLデータベースを復元できますか?
可能です。SQL ServerはT-SQLコマンドのみで完全なバックアップ・復元処理に対応しており、スクリプトによる自動化が実施できます。
バックアップからMSSQLデータベースを復元する方法を理解することは、すべてのSQL Server管理者に必要不可欠なスキルです。.bakファイルからデータベースを復元する場合、データ破損から復旧する場合、新しいサーバーへ移行する場合、完全な災害復旧計画を実行する場合を問わず、SQL ServerはSSMSとT-SQLの両方から強力な復元機能を提供します。
確実なバックアップ運用、定期的な復元テスト、エンタープライズ向け復旧ソリューションを組み合わせることで、企業は予期せぬ障害発生時の停止時間を大幅に削減し、業務継続性を確保できます。