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.
Notes
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. |
Notes
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 à 21:45 (point d'échec), les autres 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
Créez une sauvegarde de fichier journal après défaillance du journal des transactions actuellement actif comme point d'échec.
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
Notes
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.
Créez une sauvegarde de fichier journal après défaillance du journal des transactions actuellement actif comme point d'échec.
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
Procédure : appliquer une sauvegarde du journal des transactions (Transact-SQL).
Procédure : restaurer une sauvegarde du journal des transactions (SQL Server Management Studio)
Pour effectuer une restauration au point de récupération