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

データベースの完全バックアップでは、データベース全体をバックアップします。 このバックアップにはトランザクション ログの一部が含まれるため、データベースの完全バックアップを復旧できます。 データベースの完全バックアップは、バックアップが完了した時点でのデータベースを表します。

注意

各種バックアップの概要については、「単純復旧モデルでのバックアップ」または「完全復旧モデルでのバックアップ」を参照してください。

データベース バックアップは簡単に使用できます。 データベースの完全バックアップには、データベース内のすべてのデータが含まれます。 短時間でバックアップできる小さなデータベースの場合は、単にデータベースの完全バックアップを使用することをお勧めします。 データベースが大きくなると、完全バックアップにかかる時間は長くなり、必要な記憶領域も増加します。 このため、大きなデータベースの場合は、データベースの完全バックアップを差分バックアップで補完することができます。 詳細については、「データベースの差分バックアップ」を参照してください。

注意

データベース バックアップでは TRUSTWORTHY は OFF に設定されています。 TRUSTWORTHY を ON に設定する方法の詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

単純復旧モデルでのデータベース バックアップの使用

単純復旧モデルでは、データベースをバックアップした後に障害が発生すると、その間の作業内容が失われる可能性があります。 作業損失の可能性は、次の完全バックアップまで、データを更新するたびに増加します。次の完全バックアップで作業損失の可能性はゼロに戻り、そこから再び増加していきます。

単純復旧モデルでは、バックアップ間の時間が長くなると作業損失の可能性が増加します。 次の図に、データベースの完全バックアップのみを使用するバックアップ方法における作業損失の可能性を示します。

データベース バックアップ間でのデータ損失の危険性

次の例では、WITH FORMAT を使用してデータベースの完全バックアップを作成することにより、既存のバックアップを上書きして新しいメディア セットを作成します。

-- Back up the AdventureWorks2008R2 database to new media set.
BACKUP DATABASE AdventureWorks2008R2
    TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2SimpleRM.bak' 
    WITH FORMAT;
GO

-- Back up the AdventureWorks2008R2 database to new media set.
BACKUP DATABASE AdventureWorks2008R2
    TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2SimpleRM.bak' 
    WITH FORMAT;
GO

完全復旧モデルでのデータベース バックアップの使用

完全復旧と一括ログ復旧を使用するデータベースには、トランザクション ログ バックアップが必要です。 次の図に、完全復旧モデルで可能な限り単純化したバックアップ方法を示します。

一連の完全データベース バックアップとログ バックアップ

注意

完全復旧モデルのデータベースが複数あり、これらの論理的な一貫性が必要である場合、これらのデータベースを確実に復旧するための特別な手順の実装が必要になる場合があります。 詳細については、「マークされたトランザクションの使用 (完全復旧モデル)」を参照してください。

ログ バックアップの作成方法の詳細については、「トランザクション ログのバックアップ」を参照してください。

次の例では、WITH FORMAT を使用してデータベースの完全バックアップを作成することにより、既存のバックアップを上書きして新しいメディア セットを作成します。 その後、トランザクション ログをバックアップします。 実際の状況では、一連の定期的なログ バックアップを実行する必要があります。 この例では、完全復旧モデルが使用されるように AdventureWorks2008R2 サンプル データベースを設定します。

USE master;
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO
-- Back up the AdventureWorks2008R2 database to new media set (backup set 1).
BACKUP DATABASE AdventureWorks2008R2
  TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak' 
  WITH FORMAT;
GO
--Create a routine log backup (backup set 2).
BACKUP LOG AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak';
GO

USE master;
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO
-- Back up the AdventureWorks2008R2 database to new media set (backup set 1).
BACKUP DATABASE AdventureWorks2008R2
  TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak' 
  WITH FORMAT;
GO
--Create a routine log backup (backup set 2).
BACKUP LOG AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2FullRM.bak';
GO

データベースの完全バックアップの作成

データベースの完全バックアップは 1 回の操作で作成でき、通常は設定された間隔で実行するようにスケジュールされています。

データベースの完全バックアップを作成するための BACKUP の構文を次に示します。

BACKUP DATABASE database_name TO backup_device

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

バックアップ ジョブのスケジュールを設定するには

データベースの差分バックアップの使用

データベース バックアップは、データベースの差分バックアップの差分ベースとして使用できます。 これにより、データベース バックアップを一連の短い差分バックアップで補完することができます。 詳細については、「差分バックアップの使用」および「データベースの差分バックアップ」を参照してください。

データベースの完全バックアップを使用したデータベースの復元

データベースを復元することによって、データベースの完全バックアップからワン ステップで任意の場所にデータベース全体を再作成できます。 データベースの完全バックアップには、バックアップ完了時までデータベースを復旧するのに十分なトランザクション ログが含まれています。 データベースが復旧されると、コミットされていないトランザクションはロールバックされます。 復元されたデータベースは、復元されたバックアップが完了した時点の元のデータベースの状態から、コミットされていないトランザクションを差し引いた状態と一致します。

復元操作では、指定された場所にデータベースを作成します。 指定された場所にデータベースが既に存在する場合、その既存のデータベースは上書きされます。 既存のデータベースが上書きされないようにするには、復元対象のデータベースに別の名前を指定します。

詳細については、「データベースの全体復元の実行 (単純復旧モデル)」または「データベースの全体復元の実行 (完全復旧モデル)」を参照してください。