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

適用対象:yesSQL Server (サポートされているすべてのバージョン)

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

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

重要

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

このトピックの内容

注意

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

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

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

Restoring only a full database backup

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

Restoring full and differential database backups

注意

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

基本的な Transact-SQL RESTORE 構文

データベースの完全バックアップを復元するための基本的な Transact-SQLRESTORE 構文は次のとおりです。

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  

Related Tasks

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

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

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

参照

RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
sp_addumpdevice (Transact-SQL)
データベースの完全バックアップ (SQL Server)
差分バックアップ (SQL Server)
Backup Overview (SQL Server)
復元と復旧の概要 (SQL Server)