トランザクション ログ バックアップの適用 (SQL Server)Apply Transaction Log Backups (SQL Server)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

このトピックは完全復旧モデルと一括ログ復旧モデルのみに関連します。The topic is relevant only for the full recovery model or bulk-logged recovery model.

このトピックでは、 SQL ServerSQL Server データベースの復元の一環として行う、トランザクション ログ バックアップの適用について説明します。This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

トランザクション ログ バックアップを復元するための要件Requirements for restoring transaction log backups

トランザクション ログ バックアップを適用するには、次の要件を満たしている必要があります。To apply a transaction log backup, the following requirements must be met:

  • 復元シーケンスに必要なログ バックアップの保持: 復元シーケンスを完了できるだけのログ レコードがバックアップされている必要があります。Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. 復元シーケンスを開始する前に、必要なログ バックアップ (必要な場合は ログ末尾のバックアップ も含む) が用意されている必要があります。The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • 正しい復元順序: 先に、データベースの前回の完全バックアップまたは差分バックアップを復元する必要があります。Correct restore order: The immediately previous full database backup or differential database backup must be restored first. 次に、その完全バックアップまたは差分バックアップの後に作成されたすべてのトランザクション ログを日時順に復元する必要があります。Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. このログ チェーン内のトランザクション ログ バックアップが失われたかまたは損傷している場合は、失われたトランザクション ログよりも前のトランザクション ログのみを復元できます。If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • データベースはまだ復旧されていない: データベースは、最後のトランザクション ログが適用されるまで復旧できません。Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. いずれかの中間トランザクション ログ バックアップを復元した後 (ログ チェーンが終わる前) にデータベースを復旧する場合、その時点以降にデータベースを復元するには、データベースの完全バックアップから復元シーケンス全体を再度開始する必要があります。If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    ヒント

    ベスト プラクティスとして、すべてのログ バックアップを復元することをお勧めします (RESTORE LOG *database_name* WITH NORECOVERY)。A best practice is to restore all the log backups (RESTORE LOG *database_name* WITH NORECOVERY). 次に、最後のログ バックアップを復元した後、別の操作でデータベースを復旧します (RESTORE DATABASE *database_name* WITH RECOVERY)。Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE *database_name* WITH RECOVERY).

復旧とトランザクション ログRecovery and transaction logs

復元操作を完了してデータベースを復旧すると、データベースの整合性を確保するために、復旧プロセスが実行されます。When you finish the restore operation and recover the database, the recovery process is executed to ensure the integrity of the database. 復旧プロセスの詳細については、「復元と復旧の概要 (SQL Server)」を参照してください。For more information about the recovery process, see Restore and Recovery Overview (SQL Server).

復旧プロセスが完了すると、データベースはオンラインになり、そのデータベースにそれ以上のトランザクション ログ バックアップを適用できなくなります。After the recovery process completes, the database goes online, and no more transaction log backups can be applied to the database. たとえば、一連のトランザクション ログ バックアップに、実行時間が長いトランザクションが含まれているとします。For example, a series of transaction log backups contain a long-running transaction. トランザクションの開始は最初のトランザクション ログ バックアップに記録されていますが、トランザクションの終了は 2 番目のトランザクション ログ バックアップに記録されています。The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. 最初のトランザクション ログ バックアップには、コミットやロールバック操作は記録されていません。There is no record of a commit or rollback operation in the first transaction log backup. 最初のトランザクション ログ バックアップが適用されたときに復旧操作を実行すると、実行時間が長いトランザクションは不完全だと見なされ、そのトランザクションに関して最初のトランザクション ログ バックアップに記録されたデータ変更がロールバックされます。If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server では、この時点より後で 2 番目のトランザクション ログ バックアップを適用することはできません。does not allow for the second transaction log backup to be applied after this point.

注意

状況によっては、ログの復元中にファイルを明示的に追加できます。In some circumstances, you can explicitly add a file during log restore.

ログ バックアップを使用し、障害発生時まで復元するUse log backups to restore to the failure point

次のような一連のイベントが発生したとします。Assume the following sequence of events.

TimeTime イベントEvent
午前 8 時8:00 A.M. データベースの完全バックアップを作成するために、データベースをバックアップします。Back up database to create a full database backup.
正午Noon トランザクション ログのバックアップ。Back up transaction log.
午後 4 時4:00 P.M. トランザクション ログのバックアップ。Back up transaction log.
午後 6 時6:00 P.M. データベースの完全バックアップを作成するために、データベースをバックアップします。Back up database to create a full database backup.
午後 8 時8:00 P.M. トランザクション ログのバックアップ。Back up transaction log.
午後 9 時 45 分9:45 P.M. 障害が発生します。Failure occurs.

この一連のバックアップの例の詳細については、「トランザクション ログのバックアップ (SQL Server)」を参照してください。For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

午後 9時 45分の状態にデータベースを復元するにはTo restore the database to its state at 9:45 P.M. (障害の時点)、次の代替手順のいずれかを使用します。(the point of failure), either of the following alternative procedures can be used:

代替手順 1: データベースの最新の完全バックアップを使用したデータベースの復元Alternative 1: Restore the database by using the most recent full database backup

  1. 障害発生時点にアクティブなトランザクション ログのログ末尾のバックアップを作成します。Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. 午前 8 時に作成したDo not restore the 8:00 A.M. 復元よりも処理に時間がかかります。full database backup. 代わりに、より近い時刻の午後 6 時のInstead, restore the more recent 6:00 P.M. データベースの完全バックアップを復元してから、午後 8 時のfull database backup, and then apply the 8:00 P.M. ログ バックアップとログ末尾のバックアップを適用します。log backup and the tail-log backup.

代替手順 2: データベースの以前の完全バックアップを使用したデータベースの復元Alternative 2: Restore the database by using an earlier full database backup

この代替手順は、問題が生じて午後 6 時のThis alternative process is useful if a problem prevents you from using the 6:00 P.M. 復元よりも処理に時間がかかります。full database backup. この方法では、午後 6 時のデータベースの完全バックアップからのThis process takes longer than restoring from the 6:00 P.M. 復元よりも処理に時間がかかります。full database backup.

  1. 障害発生時点にアクティブなトランザクション ログのログ末尾のバックアップを作成します。Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. 午前 8 時に作成したRestore the 8:00 A.M. データベースの完全バックアップを復元し、4 つすべてのトランザクション ログ バックアップを順に復元します。full database backup, and then restore all four transaction log backups in sequence. これにより、午後 9 時 45 分までに完了したすべてのトランザクションがロールフォワードされます。This rolls forward all completed transactions up to 9:45 P.M.

    この代替手順は、一連のデータベースの完全バックアップにまたがるトランザクション ログ バックアップのチェーンを保持することにより、冗長性を伴うセキュリティが提供されることになります。This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

場合によっては、トランザクション ログを使用して特定の時点までデータベースを復元することもできます。In some cases, you can also use transaction logs to restore a database to a specific point in time. 詳細については、「 SQL Server データベースを特定の時点に復元する方法 (完全復旧モデル)」を参照してください。For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

関連タスクRelated tasks

トランザクション ログのバックアップを適用するにはTo apply a transaction log backup

復旧ポイントまで復元するにはTo restore to your recovery point

WITH NORECOVERY を使用してバックアップを復元した後、データベースを回復するにはTo recover a database after restoring backups using WITH NORECOVERY

参照See also

トランザクション ログ (SQL Server) The Transaction Log (SQL Server)
SQL Server トランザクション ログのアーキテクチャと管理ガイドSQL Server Transaction Log Architecture and Management Guide