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

適用対象: SQL Server

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

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

重要

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

このトピックの内容:

Note

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

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

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

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

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

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

Note

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

基本的な Transact-SQL RESTORE 構文

データベースのフルバックアップをリストアするための基本的なTransact-SQLRESTORE構文は以下のとおりです:

RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]

Note

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

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

RESTORE DATABASE database_name FROM backup_device WITH RECOVERY

例 (Transact-SQL)

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

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

Note

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

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

関連タスク

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

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

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

参照

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