ログ末尾のバックアップ (SQL Server)Tail-Log Backups (SQL Server)

適用対象: はいSQL Server いいえAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

このトピックは、完全復旧モデルまたは一括ログ復旧モデルを使用する SQL ServerSQL Server データベースのバックアップと復元のみに関連しています。This topic is relevant only for backup and restore of SQL ServerSQL Server databases that are using the full or bulk-logged recovery models.

ログ末尾のバックアップ は、まだバックアップされていないすべてのログ レコード ( ログの末尾) をキャプチャし、作業内容の消失を防いで、ログ チェーンの完全性を維持します。A tail-log backup captures any log records that have not yet been backed up (the tail of the log) to prevent work loss and to keep the log chain intact. SQL ServerSQL Server データベースをその最新の時点まで復元するには、トランザクション ログの末尾をあらかじめバックアップしておく必要があります。Before you can recover a SQL ServerSQL Server database to its latest point in time, you must back up the tail of its transaction log. ログ末尾のバックアップは、データベースの復旧プランの対象になる最後のバックアップとなります。The tail-log backup will be the last backup of interest in the recovery plan for the database.

注: ログ末尾のバックアップは、すべての復元シナリオで必要となるわけではありません。NOTE: Not all restore scenarios require a tail-log backup. 復旧ポイントが、それより前のログ バックアップに含まれているのであれば、ログ末尾のバックアップは不要です。You do not need a tail-log backup if the recovery point is contained in an earlier log backup. また、データベースを移動するか置き換えて (上書きして) いる場合、ログ末尾のバックアップは不要であり、最新のバックアップ以降の特定の時点に復元する必要もありません。Also, a tail-log backup is unnecessary if you are moving or replacing (overwriting) a database and do not need to restore it to a point of time after its most recent backup.

ログ末尾のバックアップが必要となるシナリオScenarios That Require a Tail-Log Backup

以下に示すシナリオでは、ログ末尾のバックアップをお勧めします。We recommend that you take a tail-log backup in the following scenarios:

  • データベースがオンライン状態であり、データベースに対して復元操作を実行する予定がある場合に、ログ末尾のバックアップを最初に行う。If the database is online and you plan to perform a restore operation on the database, begin by backing up the tail of the log. オンライン データベースのエラーを防ぐには、BACKUP Transact-SQLTransact-SQL ステートメントの WITH NORECOVERY オプションを使用する必要があります。To avoid an error for an online database, you must use the ... WITH NORECOVERY option of the BACKUP Transact-SQLTransact-SQL statement.

  • データベースがオフラインで起動できず、データベースを復元する必要がある場合に、まずログの末尾をバックアップする。If a database is offline and fails to start and you need to restore the database, first back up the tail of the log. このとき、トランザクションは発生しないので、WITH NORECOVERY の指定は省略できます。Because no transactions can occur at this time, using the WITH NORECOVERY is optional.

  • データベースが破損したとき、BACKUP ステートメントの WITH CONTINUE_AFTER_ERROR オプションを使用してログ末尾のバックアップを試す。If a database is damaged, try to take a tail-log backup by using the WITH CONTINUE_AFTER_ERROR option of the BACKUP statement.

    破損しているデータベースでログ末尾のバックアップが成功するのは、ログ ファイルが破損しておらず、データベースがログ末尾のバックアップをサポートしている状態であり、一括ログ記録された変更がデータベースに含まれていない場合に限られます。On a damaged database backing up the tail of the log can succeed only if the log files are undamaged, the database is in a state that supports tail-log backups, and the database does not contain any bulk-logged changes. ログ末尾のバックアップを作成できない場合、最新のログ バックアップの後にコミットされたトランザクションはすべて失われます。If a tail-log backup cannot be created, any transactions committed after the latest log backup are lost.

次の表は、BACKUP NORECOVERY と CONTINUE_AFTER_ERROR オプションをまとめたものです。The following table summarizes the BACKUP NORECOVERY and CONTINUE_AFTER_ERROR options.

BACKUP LOG オプションBACKUP LOG option 説明Comments
NORECOVERYNORECOVERY データベースの復元操作を続行する場合は、必ず NORECOVERY を使用します。Use NORECOVERY whenever you intend to continue with a restore operation on the database. NORECOVERY を指定すると、データベースは復元中の状態になります。NORECOVERY takes the database into the restoring state. これにより、ログ末尾のバックアップの後にデータベースが変化しないことが保障されます。This guarantees that the database does not change after the tail-log backup. これと併せて、NO_TRUNCATE オプションまたは COPY_ONLY オプションを指定しない限り、ログは切り捨てられます。The log will be truncated unless the NO_TRUNCATE option or COPY_ONLY option is also specified.

重要: データベースが破損している場合を除き、NO_TRUNCATE を使用しないでください。Important: Avoid using NO_TRUNCATE, except when the database is damaged. NORECOVERY で復元を実行する前に排他アクセスを取得するには、データベースをシングル ユーザー モードにしなければならない場合があります。You may need to put the database into single-user mode to obtain exclusive access before performing the restore with NORECOVERY. 復元後、データベースをマルチユーザー モードに戻します。After the restore, set the database back to multi-user mode.
CONTINUE_AFTER_ERRORCONTINUE_AFTER_ERROR 破損したデータベースの末尾をバックアップする場合に限り、CONTINUE_AFTER_ERROR を使用します。Use CONTINUE_AFTER_ERROR only if you are backing up the tail of a damaged database.

破損したデータベースにログ末尾のバックアップを適用する場合、通常であればログ バックアップにキャプチャされるメタデータの一部を使用できない場合があります。When you use back up the tail of the log on a damaged database, some of the metadata ordinarily captured in log backups might be unavailable. 詳細については、このトピックの「 不完全なバックアップ メタデータが含まれたログ末尾のバックアップ」を参照してください。For more information, see Tail-Log Backups That Have Incomplete Backup Metadata, in this topic.

不完全なバックアップ メタデータが含まれたログ末尾のバックアップTail-Log backups that have incomplete backup metadata

データベースがオフラインである場合、データベースが破損している場合、またはデータ ファイルが欠落している場合でも、ログ末尾のバックアップではログの末尾がキャプチャされます。Tail log backups capture the tail of the log even if the database is offline, damaged, or missing data files. これが原因で、復元情報コマンドや msdbのメタデータが不完全になる場合があります。This might cause incomplete metadata from the restore information commands and msdb. ただし、メタデータが不完全なだけで、キャプチャされたログは完全であり、使用できます。However, only the metadata is incomplete; the captured log is complete and usable.

ログ末尾のバックアップに不完全なメタデータが含まれている場合は、 backupset テーブルの has_incomplete_metadata1に設定されます。If a tail-log backup has incomplete metadata, in the backupset table, has_incomplete_metadata is set to 1. また、 RESTORE HEADERONLYの出力で HasIncompleteMetadata1に設定されます。Also, in the output of RESTORE HEADERONLY, HasIncompleteMetadata is set to 1.

ログ末尾のバックアップのメタデータが不完全な場合、ログ末尾のバックアップ時に、ファイル グループに関する情報の大部分が backupfilegroup テーブルから欠落します。If the metadata in a tail-log backup is incomplete, the backupfilegroup table will be missing most of the information about filegroups at the time of the tail-log backup. backupfilegroup テーブルのほとんどの列は NULL になり、意味を持つ列は次の列のみです。Most of the backupfilegroup table columns are NULL; the only meaningful columns are as follows:

  • backup_set_idbackup_set_id
  • filegroup_idfilegroup_id
  • typetype
  • type_desctype_desc
  • is_readonlyis_readonly

ログ末尾のバックアップを作成するには、「データベースが破損したときのトランザクション ログのバックアップ (SQL Server)」をご覧ください。To create a tail-log backup, see Back Up the Transaction Log When the Database Is Damaged (SQL Server).

トランザクション ログ バックアップを復元するには、「トランザクション ログ バックアップの復元 (SQL Server)」をご覧ください。To restore a transaction log backup, see Restore a Transaction Log Backup (SQL Server).

参照See Also

BACKUP (Transact-SQL) BACKUP (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
SQL Server データベースのバックアップと復元 Back Up and Restore of SQL Server Databases
コピーのみのバックアップ (SQL Server) Copy-Only Backups (SQL Server)
トランザクション ログのバックアップ (SQL Server) Transaction Log Backups (SQL Server)
トランザクション ログ バックアップの適用 (SQL Server) Apply Transaction Log Backups (SQL Server)
SQL Server トランザクション ログのアーキテクチャと管理ガイドSQL Server Transaction Log Architecture and Management Guide