データベースの全体復元 (単純復旧モデル)

データベースの全体復元の目的は、データベース全体を復元することです。 復元の実行中は、データベース全体がオフラインになります。 データベースの各部がオンラインになる前に、すべてのデータが一貫性のある状態に復旧されます。一貫性のある状態とは、データベースのすべての部分が同じ時点にあり、コミットされていないトランザクションが存在しない状態を示します。

単純復旧モデルでは、特定のバックアップ内にある特定の時点にデータベースを復元することはできません。

セキュリティに関する注意セキュリティに関する注意

不明なソースや信頼されていないソースからのデータベースは、アタッチまたは復元しないことをお勧めします。 そのようなデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更することによりエラーを発生させる悪意のあるコードが含まれている可能性があります。 不明なソースや信頼されていないソースからのデータベースを使用する前には、非稼働サーバーにあるデータベースで DBCC CHECKDB を実行してください。また、ストアド プロシージャやその他のユーザー定義コードなど、データベースのコードを確認してください。

このトピックの内容

  • 単純復旧モデルでのデータベース復元の概要

  • 関連タスク

注意

以前のバージョンの SQL Server からのバックアップに対するサポートの情報については、「RESTORE (Transact-SQL)」の「互換性サポート」を参照してください。

単純復旧モデルでのデータベース復元の概要

単純復旧モデルでのデータベース全体の復元は、データベースの差分バックアップを復元する必要があるかどうかに応じて 1 つまたは 2 つの RESTORE ステートメントで行われます。 次の図に示すように、データベースの完全バックアップのみを使用する場合は、最新のバックアップを復元するだけで完了します。

データベースの完全バックアップのみの復元

データベースの差分バックアップも使用する場合は、データベースを復旧しないで最新の完全バックアップを復元してから、最新の差分バックアップを復元してデータベースを復旧します。 次の図に、このプロセスを示します。

データベースの完全および差分バックアップの復元

注意

データベースのバックアップを別のサーバー インスタンスに復元する予定がある場合は、「バックアップと復元によるデータベースのコピー」を参照してください。

基本的な Transact-SQL RESTORE 構文

データベースの完全バックアップを復元する際に使用する、Transact-SQL RESTORE の基本構文を次に示します。

RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]

注意

データベースの差分バックアップも復元する場合は、WITH NORECOVERY を指定してください。

データベース バックアップを復元する際に使用する、RESTORE の基本構文を次に示します。

RESTORE DATABASE database_name FROM backup_device WITH RECOVERY

例 (Transact-SQL)

次の例では、まず BACKUP ステートメントを使用して、 AdventureWorks2012 データベースの完全バックアップと差分バックアップを作成します。 その後、これらのバックアップを順に復元します。 データベースは、差分データベース バックアップ完了時の状態に復元されます。

この例は、データベースの全体復元シナリオの復元シーケンスで重要なオプションを示しています。 復元シーケンスは、1 つ以上の復元フェーズによってデータを移動する、1 つ以上の復元操作で構成されます。 説明の目的に関係しない構文や詳細は、省略しています。 データベースを復旧する際は、RECOVERY オプションを明示的に指定することをお勧めします。このオプションは既定値ですが、指定しておくと判別がつきやすくなります。

注意

この例の先頭では、ALTER DATABASE ステートメントを使用して復旧モデルを SIMPLE に設定しています。

USE master;
--Make sure the database is using the simple recovery model.
ALTER DATABASE AdventureWorks2012 SET RECOVERY SIMPLE;
GO
-- Back up the full AdventureWorks2012 database.
BACKUP DATABASE AdventureWorks2012 
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' 
  WITH FORMAT;
GO
--Create a differential database backup.
BACKUP DATABASE AdventureWorks2012 
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
   WITH DIFFERENTIAL;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2012 
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' 
   WITH FILE=1, NORECOVERY;
--Restore the differential backup (from backup set 2).
RESTORE DATABASE AdventureWorks2012 
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' 
   WITH FILE=2, RECOVERY;
GO

[先頭に戻る]

関連タスク

データベースの完全バックアップを復元するには

データベースの差分バックアップを復元するには

SQL Server 管理オブジェクト (SMO) を使用してバックアップを復元するには

[先頭に戻る]

関連項目

参照

RESTORE (Transact-SQL)

BACKUP (Transact-SQL)

sp_addumpdevice (Transact-SQL)

概念

データベースの完全バックアップ (SQL Server)

差分バックアップ (SQL Server)

バックアップの概要 (SQL Server)

復元と復旧の概要 (SQL Server)