Application de sauvegardes du journal des transactions

 Cette rubrique concerne uniquement le mode de restauration complète ou le mode de récupération utilisant les journaux de transactions.

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 Server. Pour appliquer une sauvegarde du journal des transactions, les conditions suivantes doivent être remplies :

  • La sauvegarde différentielle ou la sauvegarde complète de base de données effectuée juste avant doit d'abord être restaurée.

  • 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. 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.

  • La base de données n'a pas encore été 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é. 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.

Récupération et journaux des transactions

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. Cette phase se nomme phase de restauration. Cette opération est nécessaire pour restaurer l'intégrité de la base de données. 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.

Par exemple, une série de sauvegardes du journal des transactions contient une transaction longue. 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. 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. 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. SQL Server ne permet pas l'application de la deuxième sauvegarde du journal des transactions après ce stade.

[!REMARQUE]

Dans certains cas, vous pouvez ajouter un fichier de façon explicite pendant la restauration du journal. Pour plus d'informations, consultez Contrôle de la création de fichiers ajoutés lors la restauration par progression.

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. Les sauvegardes de journal nécessaires, notamment la sauvegarde de journal après défaillance le cas échéant, doivent être disponibles avant le début de la séquence de restauration.

Utilisation des sauvegardes du journal des transactions pour effectuer une restauration jusqu'au point d'échec

Supposons la séquence d'événements suivante.

Heure

Événement

8h00

Sauvegardez la base de données pour créer une sauvegarde complète de base de données.

Midi

Sauvegarde du journal des transactions.

16h00

Sauvegarde du journal des transactions.

18h00

Sauvegardez la base de données pour créer une sauvegarde complète de base de données.

20h00

Sauvegarde du journal des transactions.

21h45

Une défaillance se produit.

[!REMARQUE]

Pour une explication de cet exemple de cette séquence de sauvegardes, consultez Création de sauvegardes des fichiers journaux de transactions.

Pour restaurer la base de données à son état à 21h45 (point d'échec), les procédures suivantes peuvent être utilisées :

Solution 1 : restaurer la base de données en utilisant la sauvegarde complète de base de données la plus récente

  1. Créez une sauvegarde de fichier journal après défaillance du journal des transactions actuellement actif comme point d'échec.

  2. Ne restaurez pas la sauvegarde complète de base de données de 8h00. Restaurez plutôt la sauvegarde complète de base de données la plus récente de 18h00, puis appliquez la sauvegarde du journal de 20h00 et la sauvegarde de fichier journal après défaillance.

Solution 2 :restaurer la base de données en utilisant une sauvegarde complète de base de données antérieure

[!REMARQUE]

Cette autre solution est utile si un problème vous empêche d'utiliser la sauvegarde complète de base de données de 18h00. Ce processus prend plus de temps que la restauration de la sauvegarde complète de base de données de 18h00.

  1. Créez une sauvegarde de fichier journal après défaillance du journal des transactions actuellement actif comme point d'échec.

  2. Restaurez la sauvegarde complète de base de données de 8h00, puis restaurez dans l'ordre les quatre sauvegardes du journal des transactions. Cette procédure restaure par progression toutes les transactions achevées jusqu'à 21h45.

    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.

Utilisation des sauvegardes de journaux jusqu'à un point spécifique dans le temps

Dans certains cas, vous pouvez utiliser des journaux de transactions pour restaurer une base de données à un point spécifique dans le temps. Pour plus d'informations, consultez Restauration d'une base de données vers un point dans une sauvegarde.

Application des sauvegardes des journaux des transactions

Il est recommandé de restaurer toutes les sauvegardes des journaux à l'aide de WITH NORECOVERY :

RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY

Puis, 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 database_name WITH RECOVERY

Pour appliquer une sauvegarde du journal des transactions

Pour effectuer une restauration au point de récupération

Voir aussi

Autres ressources