データベースの全体復元の実行 (単純復旧モデル)
データベースの全体復元の目的は、データベース全体を復元することです。復元の実行中は、データベース全体がオフラインになります。データベースの各部がオンラインになる前に、すべてのデータが一貫性のある状態に復旧されます。一貫性のある状態とは、データベースのすべての部分が同じ時点にあり、コミットされていないトランザクションが存在しない状態を示します。
単純復旧モデルでは、特定のバックアップ内にある特定の時点にデータベースを復元することはできません。
データベース全体の復元
- 単純復旧モデルでのデータベース全体の復元は、データベースの差分バックアップを復元する必要があるかどうかに応じて 1 つまたは 2 つの RESTORE ステートメントで行われます。
次の図に示すように、データベースの完全バックアップのみを使用する場合は、最新のバックアップを復元するだけで完了します。
データベースの差分バックアップも使用する場合は、データベースを復旧しないで最新の完全バックアップを復元してから、最新の差分バックアップを復元してデータベースを復旧します。次の図に、このプロセスを示します。
データベースを完全に復元する場合は、1 つの復元シーケンスを使用する必要があります。次の例は、データベースの全体復元シナリオの復元シーケンスで重要なオプションを示しています。復元シーケンスは、1 つ以上の復元フェーズによってデータを移動する、1 つ以上の復元操作で構成されます。説明の目的に関係しない構文や詳細は、省略しています。
データベースは完全バックアップ時の状態に復元されます。データベースを復元する際は、RECOVERY オプションを明示的に指定することをお勧めします。このオプションは既定値ですが、指定しておくと判別がつきやすくなります。
例
次の例では、まず BACKUP ステートメントを使用して、AdventureWorks2008R2 データベースの完全バックアップと差分バックアップを作成します。その後、これらのバックアップを順に復元します。
注 |
---|
この例の先頭では、ALTER DATABASE ステートメントを使用して復旧モデルを SIMPLE に設定しています。 |
USE master;
--Make sure the database is using the simple recovery model.
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY SIMPLE;
GO
-- Back up the full AdventureWorks2008R2 database.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FORMAT;
GO
--Create a differential database backup.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH DIFFERENTIAL;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FILE=1, NORECOVERY;
--Restore the differential backup (from backup set 2).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FILE=2, RECOVERY;
GO
USE master;
--Make sure the database is using the simple recovery model.
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY SIMPLE;
GO
-- Back up the full AdventureWorks2008R2 database.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FORMAT;
GO
--Create a differential database backup.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH DIFFERENTIAL;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FILE=1, NORECOVERY;
--Restore the differential backup (from backup set 2).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
WITH FILE=2, RECOVERY;
GO
データベースの完全バックアップを復元するには
データベース バックアップを復元する際に使用する、RESTORE の基本構文を次に示します。
RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]
注 |
---|
データベースの差分バックアップも復元する場合は、WITH NORECOVERY を指定してください。 |
重要 |
---|
データベースのバックアップを別のサーバー インスタンスに復元する場合は、「バックアップと復元によるデータベースのコピー」および「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。 |
データベースの差分バックアップを復元するには
データベースの差分バックアップを復元する際に使用する、RESTORE の基本構文を次に示します。
RESTORE DATABASE database_name FROM backup_device WITH RECOVERY
SQL Server 管理オブジェクト (SMO) を使用してバックアップを復元するには
SQL Server の以前のバージョンのバックアップに対するサポート
SQL Server 2008 では、SQL Server 2000、SQL Server 2005、または SQL Server 2008 を使用して作成されたユーザー データベース バックアップを復元できます。ただし、SQL Server 2000 または SQL Server 2005 を使用して作成された master、model、および msdb のバックアップを SQL Server 2008 で復元することはできません。また、SQL Server 2008 のバックアップを以前のバージョンの SQL Server で復元することもできません。
SQL Server 2008 では、以前のバージョンとは異なる既定のパスを使用します。そのため、SQL Server 2000 または SQL Server 2005 の既定の場所で作成されたデータベースをバックアップから復元するには、MOVE オプションを使用する必要があります。新しい既定パスの詳細については、「SQL Server の既定のインスタンスおよび名前付きインスタンスのファイルの場所」を参照してください。
注 |
---|
SQL Server Version 7.0 以前のバージョンを使用して作成されたデータベースを SQL Server 2005 にアップグレードする方法については、「SQL Server 7.0 以前のバージョンからのデータベースのコピー」を参照してください。 |