ファイルおよびファイル グループをバックアップする方法 (Transact-SQL)

データベースのサイズやパフォーマンスの要件によりデータベースの完全バックアップが不可能な場合は、代わりに、ファイル バックアップを作成できます。ファイル バックアップには、1 つ以上のファイル (またはファイル グループ) 内のすべてのデータが含まれます。ファイル バックアップの詳細については、「ファイルの完全バックアップ」および「ファイルの差分バックアップ」を参照してください。

重要な注意事項重要

単純復旧モデルでは、読み取りと書き込みが可能なファイルはすべてまとめてバックアップする必要があります。これにより、データベースを一貫性のある時点に復元できます。読み取りと書き込みが可能なファイルまたはファイル グループを個別に指定するのではなく、READ_WRITE_FILEGROUPS オプションを使用します。このオプションにより、読み取りと書き込みが可能なすべてのファイル グループがデータベースにバックアップされます。READ_WRITE_FILEGROUPS を指定して作成されるバックアップは、部分バックアップと呼ばれます。詳細については、「部分バックアップ」を参照してください。

ファイルおよびファイル グループをバックアップするには

  1. ファイルまたはファイル グループのバックアップを作成するには、BACKUP DATABASE <file_or_filegroup> ステートメントを使用します。このステートメントでは、少なくとも次の項目を指定する必要があります。

    • データベースの名前。

    • ファイルまたはファイル グループごとに FILE 句または FILEGROUP 句。

    • 完全バックアップが書き込まれるバックアップ デバイス。

    ファイル バックアップの基本的な Transact-SQL 構文は次のとおりです。

    BACKUP DATABASE database

    { FILE **=**logical_file_name | FILEGROUP **=**logical_filegroup_name } [ ,...f ]

    TO backup_device [ ,...n ]

    [ WITH with_options [ ,...o ] ] ;

    オプション

    説明

    database

    トランザクション ログ、データベースの一部、またはデータベース全体をバックアップする場合の、バックアップ元となるデータベースを指定します。

    FILE =logical_file_name

    ファイル バックアップに含めるファイルの論理名を指定します。

    FILEGROUP =logical_filegroup_name

    ファイル バックアップに含めるファイル グループの論理名を指定します。単純復旧モデルでは、ファイル グループのバックアップは、読み取り専用のファイル グループに対してのみ使用できます。

    [ ,...f ]

    複数のファイルおよびファイル グループを指定できることを示すプレースホルダです。ファイルまたはファイル グループの数は無制限です。

    backup_device [ ,...n ]

    バックアップ操作に使用する 1 ~ 64 個のバックアップ デバイスの一覧を指定します。物理バックアップ デバイスを指定したり、対応する論理バックアップ デバイス (既に定義されている場合) を指定したりできます。物理バックアップ デバイスを指定するには、DISK オプションまたは TAPE オプションを使用します。

    { DISK | TAPE } =physical_backup_device_name

    詳細については、「バックアップ デバイス」を参照してください。

    WITH with_options [ ,...o ]

    必要に応じて、1 つ以上の追加オプション (DIFFERENTIAL など) を指定します。

    注意注意
    ファイルの差分バックアップを行うには、差分のベースとなる完全ファイル バックアップが必要です。詳細については、「ファイルの差分バックアップ」を参照してください。
  2. 完全復旧モデルでは、トランザクション ログもバックアップする必要があります。ファイルの完全バックアップの完全なセットを使用してデータベースを復元するには、最初のファイル バックアップの先頭から、すべてのファイル バックアップにわたって十分なログ バックアップが必要です。詳細については、「トランザクション ログ バックアップを作成する方法 (Transact-SQL)」を参照してください。

使用例

次の例では、Sales データベースのセカンダリ ファイル グループの 1 つ以上のファイルをバックアップします。このデータベースでは、完全復旧モデルを使用し、次のセカンダリ ファイル グループが含まれています。

  • SGrp1Fi1 ファイルと SGrp1Fi2 ファイルを含む、SalesGroup1 という名前のファイル グループ。

  • SGrp2Fi1 ファイルと SGrp2Fi2 ファイルを含む、SalesGroup2 という名前のファイル グループ。

注意注意

完全復旧モデルでは、ログを切り捨てて、データベースを特定の時点に復元するために、定期的なログ バックアップが必要です。

A. 2 つのファイルのファイル バックアップの作成

次の例では、SalesGroup1 ファイル グループの SGrp1Fi2 ファイルと SalesGroup2 ファイル グループの SGrp2Fi2 ファイルのみのファイルの差分バックアップを作成します。

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck'
GO

B. セカンダリ ファイル グループのファイルの完全バックアップの作成

次の例では、両方のセカンダリ ファイル グループの各ファイルの完全バックアップを作成します。

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO

C. セカンダリ ファイル グループのファイルの差分バックアップの作成

次の例では、両方のセカンダリ ファイル グループの各ファイルの差分バックアップを作成します。

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck'
GO
   WITH 
      DIFFERENTIAL,
GO