Appliquer les sauvegardes du journal de transactions (SQL Server)Apply Transaction Log Backups (SQL Server)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Cette rubrique concerne uniquement le mode de récupération complète ou le mode de récupération utilisant les journaux de transactions.The topic is relevant only for the full recovery model or bulk-logged recovery model.

Cette rubrique décrit l'application de sauvegardes du journal des transaction dans le cadre de la restauration d'une base de données SQL ServerSQL Server .This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

Conditions requises pour la restauration des sauvegardes du journal des transactionsRequirements for restoring transaction log backups

Pour appliquer une sauvegarde du journal des transactions, les conditions suivantes doivent être remplies :To apply a transaction log backup, the following requirements must be met:

  • Sauvegardes de journal en nombre suffisant pour une séquence de restauration : Vous devez disposer de suffisamment d'enregistrements de journal sauvegardés pour exécuter une séquence de restauration.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. Les sauvegardes de journal nécessaires, notamment la sauvegarde de la fin du journal le cas échéant, doivent être disponibles avant le début de la séquence de restauration.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • Ordre de restauration correct : La sauvegarde différentielle ou la sauvegarde complète de base de données effectuée juste avant doit d'abord être restaurée.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. Puis, tous les journaux de transactions créés après cette sauvegarde complète ou différentielle de base de données doivent être restaurés dans l'ordre chronologique.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. Si une sauvegarde du journal des transactions dans cette séquence de journaux de transactions consécutifs est perdue ou endommagée, vous ne pouvez restaurer que les journaux des transactions antérieurs au journal des transactions manquant.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • Base de données pas encore récupérée : La base de données ne peut pas être récupérée tant que le dernier journal des transactions n'a pas été appliqué.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. Si vous récupérez la base de données après avoir restauré l'une des sauvegardes du journal des transactions intermédiaires, c'est-à-dire avant la fin de la séquence de journaux de transactions consécutifs, vous ne pouvez pas restaurer la base de données au-delà de ce point sans redémarrer toute la séquence de restauration, en commençant par la sauvegarde complète de base de données.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.

    ASTUCETIP! Il est recommandé de restaurer toutes les sauvegardes des journaux (RESTORE LOG nom_base_de_données WITH NORECOVERY).A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). Ensuite, après la restauration de la dernière sauvegarde du journal, récupérez la base de données dans une opération séparée (RESTORE DATABASE nom_base_de_données WITH RECOVERY).Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

Récupération et journaux des transactionsRecovery and transaction logs

Lorsque vous terminez l'opération de restauration et récupérez la base de données, la récupération annule toutes les transactions incomplètes.When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. Cette phase se nomme phase de restauration.This is known as the undo phase. Cette opération est nécessaire pour restaurer l'intégrité de la base de données.Rolling back is required to restore the integrity of the database. Après la restauration, la base de données passe en ligne, et aucune autre sauvegarde du journal des transactions ne peut être appliquée à la base de données.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

Par exemple, une série de sauvegardes du journal des transactions contient une transaction longue.For example, a series of transaction log backups contain a long-running transaction. Le démarrage de la transaction est enregistré dans la première sauvegarde du journal des transactions, mais la fin de la transaction est enregistrée dans la seconde sauvegarde du journal des transactions.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. Il n’y a pas d'enregistrement d’une opération de validation ou de restauration dans la première sauvegarde du journal des transactions.There is no record of a commit or rollback operation in the first transaction log backup. Si une opération de récupération est exécutée lors de l'application de la première sauvegarde du journal des transactions, la longue transaction est traitée comme incomplète, et les modifications de données enregistrées dans la première sauvegarde du journal des transactions pour la transaction sont restaurées.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 ne permet pas l'application de la deuxième sauvegarde du journal des transactions après ce stade.does not allow for the second transaction log backup to be applied after this point.

REMARQUE : Dans certains cas, vous pouvez ajouter un fichier de façon explicite pendant la restauration du journal.NOTE: In some circumstances, you can explicitly add a file during log restore.

Utiliser les sauvegardes du journal des transactions pour effectuer une restauration jusqu’au point d’échecUse log backups to restore to the failure point

Supposons la séquence d'événements suivante.Assume the following sequence of events.

TimeTime ÉvénementEvent
8h008:00 A.M. Sauvegardez la base de données pour créer une sauvegarde complète de base de données.Back up database to create a full database backup.
MidiNoon Sauvegarde du journal des transactions.Back up transaction log.
16h004:00 P.M. Sauvegarde du journal des transactions.Back up transaction log.
18h006:00 P.M. Sauvegardez la base de données pour créer une sauvegarde complète de base de données.Back up database to create a full database backup.
20h008:00 P.M. Sauvegarde du journal des transactions.Back up transaction log.
21h459:45 P.M. Une défaillance se produit.Failure occurs.

Pour une explication de cet exemple de cette séquence de sauvegardes, consultez Sauvegardes des journaux de transactions (SQL Server).For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

Pour restaurer la base de données à son état à 21:45To restore the database to its state at 9:45 P.M. (point d'échec), les autres procédures suivantes peuvent être utilisées :(the point of failure), either of the following alternative procedures can be used:

Nous sommes à votre écoute : Si vous trouvez des informations obsolètes ou incorrectes dans cet article, par exemple une étape ou une erreur dans un code, n’hésitez pas à nous en faire part.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Vous pouvez cliquer sur le bouton Cette page dans la section Commentaires au bas de cette page.You can click the This page button in the Feedback section at the bottom of this page. Nous lisons chaque commentaire concernant SQL, généralement le jour suivant.We read every item of feedback about SQL, typically the next day. Nous vous remercions.Thanks.

Solution 1 : restaurer la base de données en utilisant la sauvegarde complète de base de données la plus récenteAlternative 1: Restore the database by using the most recent full database backup

  1. Créez une sauvegarde de la fin du journal du journal des transactions actuellement actif comme point d'échec.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Ne restaurez pas la sauvegarde complèteDo not restore the 8:00 A.M. de base de données de 18h00.full database backup. Restaurez plutôt la sauvegarde complète de base de données la plus récenteInstead, restore the more recent 6:00 P.M. de 18h00, puis appliquez la sauvegarde du journal de 20h00full database backup, and then apply the 8:00 P.M. et la sauvegarde de la fin du journal.log backup and the tail-log backup.

Solution 2 : restaurer la base de données en utilisant une sauvegarde complète de base de données antérieureAlternative 2: Restore the database by using an earlier full database backup

Cette autre solution est utile si un problème vous empêche d'utiliser la sauvegarde complèteThis alternative process is useful if a problem prevents you from using the 6:00 P.M. de base de données de 18h00.full database backup. Ce processus prend plus de temps que la restauration de la sauvegarde complèteThis process takes longer than restoring from the 6:00 P.M. de base de données de 18h00.full database backup.

  1. Créez une sauvegarde de la fin du journal du journal des transactions actuellement actif comme point d'échec.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Restaurez la sauvegarde complèteRestore the 8:00 A.M. de base de données de 8h00, puis restaurez dans l'ordre les quatre sauvegardes du journal des transactions.full database backup, and then restore all four transaction log backups in sequence. Cette procédure restaure par progression toutes les transactions achevées jusqu'à 21h45.This rolls forward all completed transactions up to 9:45 P.M.

    Cette solution souligne la sécurité redondante offerte par le maintien d'une séquence de sauvegardes de journaux de transactions dans une série de sauvegardes complètes de base de données.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

Dans certains cas, vous pouvez utiliser des journaux de transactions pour restaurer une base de données à un point spécifique dans le temps.In some cases, you can also use transaction logs to restore a database to a specific point in time. Pour plus d’informations, consultez Restaurer une base de données SQL Server jusqu’à une limite dans le temps (mode de récupération complète).For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Related tasksRelated tasks

Pour appliquer une sauvegarde du journal des transactionsTo apply a transaction log backup

Pour effectuer une restauration au point de récupérationTo restore to your recovery point

Pour récupérer une base de données après la restauration de sauvegardes à l'aide de WITH NORECOVERYTo recover a database after restoring backups using WITH NORECOVERY

Voir aussiSee also

Journal des transactions (SQL Server)The Transaction Log (SQL Server)