Restaurer une sauvegarde de journal des transactions (SQL Server)

S’applique à :SQL Server

Cette rubrique explique comment restaurer une sauvegarde du journal des transactions dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL.

Dans cette rubrique

Avant de commencer

Prerequisites

  • Ces sauvegardes doivent être restaurées dans l'ordre de leur création. Avant de pouvoir restaurer une sauvegarde donnée du journal des transactions, vous devez restaurer les sauvegardes antérieures suivantes sans annuler les transactions non validées, autrement dit avec l'option WITH NORECOVERY.

    • La sauvegarde complète de la base de données et la dernière sauvegarde différentielle, s'il en existe, effectuée avant la sauvegarde donnée du journal des transactions. Avant de créer la sauvegarde complète ou différentielle de base de données la plus récente, la base de données devait utiliser le mode de restauration complète ou le mode de récupération utilisant les journaux de transactions.

    • Toutes les sauvegardes du journal des transactions effectuées après la sauvegarde complète de la base de données ou la sauvegarde différentielle (si vous la restaurez), mais avant la sauvegarde donnée du journal des transactions. Les sauvegardes du journal doivent être appliquées dans l'ordre dans lequel elles ont été créées, sans rupture dans la séquence de journaux.

      Pour plus d’informations sur les sauvegardes de journal des transactions, consultez Sauvegardes du journal des transactions (SQL Server) et Appliquer des sauvegardes de journal des transactions (SQL Server).

Sécurité

Autorisations

Les autorisations RESTORE sont attribuées aux rôles dont les informations d'appartenance sont toujours immédiatement accessibles à partir du serveur. Étant donné que l’appartenance au rôle de base de données fixe ne peut être contrôlée que quand la base de données est accessible et non endommagée, ce qui n’est pas toujours le cas lorsque RESTORE est exécuté, les membres du rôle de base de données fixe db_owner ne détiennent pas d’autorisations RESTORE.

Utilisation de SQL Server Management Studio

Avertissement

La procédure de restauration normale consiste à sélectionner les sauvegardes des journaux dans la boîte de dialogue Restaurer la base de données en même temps que les sauvegardes de données et les sauvegardes différentielles.

Pour restaurer une sauvegarde de journal des transactions

  1. Après la connexion à l’instance appropriée du moteur de base de données Microsoft SQL Server, dans l’Explorateur d’objets, cliquez sur le nom du serveur pour développer l’arborescence du serveur.

  2. Développez Bases de donnéespuis, selon la base de données, sélectionnez une base de données utilisateur ou développez Bases de données système et sélectionnez une base de données système.

  3. Cliquez avec le bouton droit sur la base de données, pointez sur Tâches, pointez sur Restaurer, puis cliquez sur Journal des transactions, pour ouvrir la boîte de dialogue Restaurer le journal des transactions .

    Note

    Si Journal des transactions est grisé, dans un premier temps, vous devrez peut-être restaurer une sauvegarde complète ou différentielle. Utilisez la boîte de dialogue Sauvegarde de la base de données .

  4. Dans la zone de liste Base de données de la page Général , sélectionnez le nom d'une base de données. Seules les bases de données en état de restauration sont répertoriées.

  5. Pour préciser la source et l'emplacement des jeux de sauvegarde à restaurer, cliquez sur l'une des options suivantes :

    • À partir de sauvegardes précédentes de la base de données

      Sélectionnez la base de données à restaurer dans la liste déroulante. La liste contient uniquement les bases de données qui ont été sauvegardées selon l'historique de sauvegarde msdb .

    • À partir d'un fichier ou d'une bande

      Cliquez sur le bouton Parcourir (...) pour ouvrir la boîte de dialogue Sélectionner les unités de sauvegarde . Dans la zone Type du média de sauvegarde , sélectionnez l'un des types d'unités proposés. Pour sélectionner une ou plusieurs unités pour la zone Support de sauvegarde , cliquez sur Ajouter.

      Après avoir ajouté les unités souhaitées à la zone de liste Support de sauvegarde , cliquez sur OK pour revenir à la page Général .

  6. Dans la grille Sélectionner les sauvegardes du journal des transactions à restaurer , sélectionnez les sauvegardes à restaurer. Cette grille répertorie les sauvegardes du journal des transactions disponibles pour la base de données sélectionnée. Une sauvegarde du journal n'est disponible que si son Premier NSE est supérieur au Dernier NSE de la base de données. Les sauvegardes des journaux sont affichées dans l'ordre des numéros séquentiels dans le journal (NSE) qu'elles contiennent et elles doivent être restaurées dans cet ordre.

    Le tableau suivant répertorie les en-têtes de colonnes de la grille et décrit leur valeur.

    En-tête active
    Restauration Les cases à cocher indiquent les jeux de sauvegarde à restaurer.
    Nom  Nom du jeu de sauvegardes.
    Composant Composant sauvegardé : base de données, fichier ou <vide> (pour les journaux des transactions).
    Database Nom de la base de données impliquée dans la sauvegarde.
    Date de début Date et heure de début de la sauvegarde, d'après les paramètres régionaux du client.
    Date de fin Date et heure de fin de la sauvegarde, d'après les paramètres régionaux du client.
    Premier NSE Numéro séquentiel dans le journal correspondant à la première transaction dans le jeu de sauvegarde. Vide pour les sauvegardes de fichiers.
    Dernier NSE Numéro séquentiel dans le journal correspondant à la dernière transaction dans le jeu de sauvegarde. Vide pour les sauvegardes de fichiers.
    NSE du point de contrôle Numéro séquentiel dans le journal correspondant au point de contrôle le plus récent au moment où la sauvegarde a été créée.
    Tous les NSE Numéro séquentiel dans le journal correspondant à la sauvegarde complète la plus récente de la base de données.
    Serveur Nom de l'instance du moteur de base de données qui a effectué l'opération de sauvegarde.
    Nom d’utilisateur Nom de l'utilisateur qui a effectué la restauration.
    Size Taille du jeu de sauvegarde en octets.
    Position Position du jeu de sauvegarde dans le volume
    Expiration Date et heure d'expiration du jeu de sauvegardes.
  7. Sélectionnez l’une des options suivantes :

    • Limite dans le temps

      Conservez la valeur par défaut (Le plus récent possible) ou sélectionnez une date et une heure données en cliquant sur le bouton d’exploration pour ouvrir la boîte de dialogue Limite de restauration dans le temps .

    • Transaction marquée

      Restaurez la base de données jusqu'à une transaction marquée auparavant. Cette option ouvre la boîte de dialogue Sélectionner une transaction marquée . Celle-ci affiche une grille qui répertorie les transactions marquées disponibles dans les sauvegardes du journal des transactions sélectionnées.

      Par défaut, la restauration s'effectue jusqu'à la transaction marquée, en l'excluant. Pour restaurer également la transaction marquée, sélectionnez Inclure la transaction marquée.

      Le tableau suivant répertorie les en-têtes de colonnes de la grille et décrit leur valeur.

      En-tête active
      <vide> Affiche une case à cocher pour la sélection de la marque.
      Marque de transaction Nom de la transaction marquée spécifiée par l'utilisateur lors de la validation de la transaction.
      Date Date et heure de la validation de la transaction. La date et l’heure sont affichées telles qu’enregistrées dans la table msdbgmarkhistory , et non dans l’option Date et heure de l’ordinateur client.
      Description Description de la transaction marquée spécifiée par l'utilisateur lorsque la transaction a été validée (le cas échéant).
      LSN Numéro séquentiel dans le journal de la transaction marquée.
      Database Nom de la base de données où la transaction marquée a été validée.
      Nom d’utilisateur Nom de l'utilisateur de la base de données où la transaction marquée a été validée.
  8. Pour afficher ou sélectionner les options avancées, cliquez sur Options dans le volet Sélectionner une page .

  9. Dans la section Options de restauration , les options sont les suivantes :

    • Conserver les paramètres de la réplication (WITH KEEP_REPLICATION)

      Conserve les paramètres de réplication lors de la restauration d'une base de données publiée sur un serveur autre que celui sur lequel la base de données a été créée.

      Cette option est disponible uniquement avec l’option Laisser la base de données opérationnelle en restaurant les transactions non validées (décrite plus loin). Cela équivaut à la restauration d’une base de données avec l’option RECOVERY .

      La vérification de cette option équivaut à utiliser l’option KEEP_REPLICATION dans une instruction Transact-SQLRESTORE .

    • Demander confirmation avant chaque restauration de sauvegarde

      Avant de restaurer chaque jeu de sauvegarde (après la première), cette option affiche la boîte de dialogue Continuer la restauration qui vous invite à préciser si vous voulez continuer la séquence de restauration. Ce dialogue affiche le nom du support de sauvegarde suivant (s'il est disponible), ainsi que le nom et la description du jeu de sauvegarde.

      Cette option est particulièrement utile lorsque vous devez changer des bandes de différents supports de sauvegarde. Vous pouvez par exemple l'utiliser lorsque le serveur n'a qu'un périphérique à bandes. Attendez d'être prêt à continuer avant de cliquer sur OK.

      Cliquez sur Non pour laisser la base de données dans l'état de restauration. Si vous le souhaitez, vous pouvez poursuivre la séquence de restauration lorsque la dernière restauration est terminée. Si la sauvegarde suivante est une sauvegarde de données ou différentielle, utilisez à nouveau la tâche Restaurer la base de données . S'il s'agit d'une sauvegarde de journal, utilisez la tâche Restaurer le journal des transactions .

    • Restreindre l'accès à la base de données restaurée (WITH RESTRICTED_USER)

      Limite l’accès à la base de données restaurée aux membres de db_owner, dbcreatorou sysadmin.

      La vérification de cette option est synonyme d’utilisation de l’option RESTRICTED_USER dans une instruction Transact-SQLRESTORE .

  10. Pour les options État de récupération , spécifiez l'état de la base de données après la restauration.

    • Laisser la base de données opérationnelle en restaurant les transactions non validées. Les journaux des transactions supplémentaires ne peuvent pas être restaurés. (RESTORE WITH RECOVERY)

      Récupère la base de données. Cette option équivaut à l’option RECOVERY dans une instruction Transact-SQLRESTORE .

      Choisissez cette option uniquement si vous ne voulez restaurer aucun fichier journal.

    • Laisser la base de données non opérationnelle, et ne pas restaurer les transactions non validées. Les journaux des transactions supplémentaires peuvent être restaurés. (RESTORE WITH NORECOVERY)

      Laisse la base de données non récupérée dans l'état RESTORING . Cette option équivaut à utiliser l’option NORECOVERY dans une instruction Transact-SQLRESTORE .

      Lorsque vous la choisissez, l'option Conserver les paramètres de réplication n'est pas disponible.

      Important

      Pour une base de données secondaire ou miroir, sélectionnez toujours cette option.

    • Laisser la base de données en lecture seule. Annulez les transactions non validées, mais enregistrez les actions d'annulation dans un fichier d'annulation afin de rendre réversibles les effets de la récupération. (RESTORE WITH STANDBY)

      Laisse la base de données dans un état de secours. Cette option équivaut à utiliser l’option STANDBY dans une instruction Transact-SQLRESTORE .

      Cette option nécessite de définir un fichier d'annulation.

  11. Éventuellement, spécifiez un nom de fichier d'annulation dans la zone de texte Fichiers d'annulation . Cette option est indispensable si vous laissez la base de données en lecture seule. Vous pouvez rechercher le fichier d'annulation ou taper son chemin d'accès dans la zone de texte.

Utilisation de Transact-SQL

Important

Nous vous recommandons de toujours préciser de façon claire WITH NORECOVERY ou WITH RECOVERY dans chaque instruction RESTORE pour éliminer toute ambiguïté. Cela est particulièrement important lors de l'écriture de scripts.

Pour restaurer une sauvegarde de journal des transactions

  1. Exécutez l'instruction RESTORE LOG pour appliquer la sauvegarde du journal des transactions, en spécifiant :

    • le nom de la base de données à laquelle sera appliqué le journal des transactions ;

    • l'unité de sauvegarde à partir de laquelle sera restaurée la sauvegarde du journal des transactions ;

    • la clause NORECOVERY.

    La syntaxe de base pour cette instruction est la suivante :

    RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY.

    database_name est le nom de la base de données et <backup_device>est le nom de l’appareil qui contient la sauvegarde du journal en cours de restauration.

  2. Répétez l'étape 1 pour chaque sauvegarde du journal des transactions à appliquer.

  3. Après avoir restauré la dernière sauvegarde de votre séquence de restauration, utilisez l'une des instructions ci-dessous :

    • Récupérer la base de données dans le cadre de la dernière instruction RESTORE LOG :

      RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY;  
      GO  
      
    • attendre de récupérer la base de données à l'aide d'une instruction séparée RESTORE DATABASE :

      RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;   
      RESTORE DATABASE <database_name> WITH RECOVERY;  
      GO  
      

      Attendre de récupérer la base de données vous permet de vérifier si vous avez restauré toutes les sauvegardes de journaux nécessaires. Cette méthode est souvent conseillée si vous effectuez une restauration limitée dans le temps.

    Important

    Si vous créez une base de données miroir, omettez l'étape de récupération. Une base de données miroir doit rester dans l'état RESTORING.

Exemples (Transact-SQL)

Par défaut, la base de données AdventureWorks2022 utilise le mode de récupération simple. Les exemples suivants nécessitent la modification de la base de données pour utiliser le mode de restauration complète, comme suit :

ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL;  

A. Application d'une sauvegarde unique du journal des transactions

Dans cet exemple, nous commençons par restaurer la base de données AdventureWorks2022 à l'aide d'une sauvegarde complète de base de données qui réside sur une unité de sauvegarde nommée AdventureWorks2022_1. Nous appliquons ensuite la première sauvegarde du journal des transactions qui réside sur une unité de sauvegarde nommée AdventureWorks2022_log. Enfin, nous récupérons la base de données.

RESTORE DATABASE AdventureWorks2022  
   FROM AdventureWorks2022_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2022  
   WITH RECOVERY;  
GO  

B. Application de plusieurs sauvegardes du journal des transactions

Dans cet exemple, nous commençons par restaurer la base de données AdventureWorks2022 à l'aide d'une sauvegarde complète de base de données qui réside sur une unité de sauvegarde nommée AdventureWorks2022_1. Nous appliquons ensuite, successivement, les premières sauvegardes du journal des transactions qui résident sur une unité de sauvegarde nommée AdventureWorks2022_log. Enfin, nous récupérons la base de données.

RESTORE DATABASE AdventureWorks2022  
   FROM AdventureWorks2022_1  
   WITH NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 1,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 2,  
   NORECOVERY;  
GO  
RESTORE LOG AdventureWorks2022  
   FROM AdventureWorks2022_log  
   WITH FILE = 3,  
   NORECOVERY;  
GO  
RESTORE DATABASE AdventureWorks2022  
   WITH RECOVERY;  
GO  

Tâches associées

Voir aussi

RESTORE (Transact-SQL)
Appliquer les sauvegardes du journal de transactions (SQL Server)