Exécution d'une restauration de base de données complète (mode de restauration complète)

Lors d'une restauration complète de base de données, le but est de restaurer la totalité de la base de données. L'ensemble de la base de données est hors ligne pendant la durée de la restauration. Avant qu'une partie de la base de données ne soit en ligne, toutes les données sont récupérées dans un état cohérent où toutes les parties de la base de données sont chronologiquement synchronisées et aucune transaction non validée n'existe.

Avec le mode de restauration complète, la base de données peut être restaurée à un certain point chronologique. Ce point peut être la dernière mise à jour disponible, une date et une heure spécifiques ou une transaction marquée.

Remarque relative à la sécuritéRemarque relative à la sécurité

Nous vous recommandons de ne pas attacher ni de restaurer des bases de données provenant de sources inconnues ou non approuvées. Ces bases de données peuvent contenir du code malveillant qui peut exécuter du code Transact-SQL imprévisible ou causer des erreurs en modifiant le schéma ou la structure physique de la base de données. Avant d'utiliser une base de données provenant d'une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur qui n'est pas un serveur de production et examinez le code (par exemple les procédures stockées ou le code défini par l'utilisateur) dans la base de données.

Restauration d'une base de données complète

Généralement, la récupération d'une base de données au point d'échec comprend les étapes de base suivantes :

  1. Sauvegardez le journal des transactions actives (connu sous le nom de fin du journal). Cela entraîne la création d'une sauvegarde de fichier journal après défaillance. Si le journal des transactions actives n'est pas disponible, toutes les transactions contenues dans cette partie du journal sont perdues.

    Important

    Dans le mode de récupération utilisant les journaux de transactions, la sauvegarde de tout journal contenant des opérations journalisées en bloc nécessite un accès à tous les fichiers de données dans la base de données. Si les fichiers de données ne sont pas accessibles, le journal des transactions ne peut pas être sauvegardé. Dans ce cas, vous devez répéter manuellement tous les changements effectués depuis la dernière sauvegarde du journal.

    Pour plus d'informations, consultez Sauvegardes de fichier journal après défaillance.

  2. Restaurez la sauvegarde complète de base de données la plus récente sans récupérer la base de données (RESTORE DATABASE database_name WITH NORECOVERY).

  3. S'il existe des sauvegardes différentielles, restaurez la plus récente sans récupérer la base de données (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

  4. En commençant par la première sauvegarde du journal des transactions qui a été créée après la sauvegarde que vous venez de restaurer, restaurez les journaux en séquence avec l'instruction NORECOVERY.

  5. Récupérez la base de données (RESTORE DATABASE database_name WITH RECOVERY). Cette étape peut également être combinée avec la restauration de la dernière sauvegarde du journal.

  6. Une restauration de base de données complète peut généralement être récupérée à un moment donné ou sur une transaction marquée au sein d'une sauvegarde du journal. Cependant, en mode de récupération utilisant les journaux de transactions, si la sauvegarde du journal contient des modifications journalisées en bloc, la récupération jusqu'à une date et heure est impossible. Pour plus d'informations, consultez Restauration d'une base de données vers un point dans une sauvegarde.

L'illustration ci-dessous montre ce processus. Après une défaillance (1), une sauvegarde de fichier journal après défaillance est créée (2). Ensuite, la base de données est restaurée jusqu'au point de défaillance. Cela implique la restauration d'une sauvegarde de base de données suivie d'une sauvegarde différentielle, ainsi que chaque sauvegarde de journal effectuée après la sauvegarde différentielle, y compris la sauvegarde de fichier journal après défaillance.

Restauration de base de données complète au moment d'une défaillance

Lors de la restauration complète d'une base de données, une séquence de restauration unique doit être utilisée. L'exemple suivant montre les options essentielles dans une séquence de restauration pour le scénario de restauration complète de base de données dans lequel la base de données est restaurée au point d'échec. Une séquence de restauration comprend une ou plusieurs opérations de restauration qui déplacent les données en une ou plusieurs phases. La syntaxe et les détails qui ne sont pas importants à cette fin sont omis.

La base de données est restaurée et restaurée par progression. Une base de données différentielle est utilisée pour réduire la durée de la restauration par progression. Cette séquence de restauration est destinée à éliminer toute perte de travail ; la dernière sauvegarde restaurée est une sauvegarde de fichier journal après défaillance.

La syntaxe de base RESTORE pour la séquence de restauration est :

  1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Répétez cette étape de restauration pour chaque sauvegarde du journal supplémentaire.

  4. RESTORE DATABASE database WITH RECOVERY;

Exemple

Pour l'exemple suivant, l'exemple de base de données AdventureWorks a été défini pour utiliser le mode de restauration complète avant que la base de données n'ait été sauvegardée. L'exemple crée une sauvegarde de fichier journal après défaillance de la base de données AdventureWorks. Ensuite, l'exemple restaure une sauvegarde complète de base de données antérieure et une sauvegarde du journal, puis celui-ci restaure la sauvegarde de fichier journal après défaillance. L'exemple récupère la base de données dans une dernière étape séparée.

[!REMARQUE]

Cet exemple utilise une sauvegarde de base de données et une sauvegarde du journal créées dans la section « Utilisation des sauvegardes de base de données en mode de restauration complète » dans Sauvegardes complètes de base de données.

L'exemple commence par une instruction ALTER DATABASE qui affecte au mode de restauration l'option FULL.

USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks 
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'  
   WITH NORECOVERY; 
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' 
  WITH FILE=1, 
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak' 
  WITH FILE=2, 
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks 
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
  WITH FILE=3, 
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO

Récupération jusqu'à la défaillance

Pour restaurer une sauvegarde complète de base de données

Important

Lorsque vous restaurez une sauvegarde de base de données sur une instance de serveur différente, consultez Copie de bases de données avec la sauvegarde et la restauration et Gestion des métadonnées lors de la mise à disposition d'une base de données sur une autre instance de serveur.

Pour restaurer une sauvegarde différentielle de base de données

Pour restaurer une sauvegarde du journal des transactions

Après la restauration de vos sauvegardes ou de votre sauvegarde des données, vous devez restaurer toutes les sauvegardes ultérieures des journaux de transactions puis récupérer la base de données.

Pour restaurer une sauvegarde à l'aide de SMO (SQL Server Management Objects)

Récupération limitée dans le temps

En mode de restauration complète, une base de données peut être restaurée à un certain point chronologique dans une sauvegarde de journal. Le point chronologique peut correspondre à une date et à une heure spécifiques, à une transaction marquée ou à un numéro séquentiel dans le journal. Pour plus d'informations, consultez Restauration d'une base de données vers un point dans une sauvegarde.

Prise en charge des sauvegardes dans les versions précédentes de SQL Server

Dans SQL Server 2008, vous pouvez restaurer une sauvegarde de base de données créée à l'aide de SQL Server 2000, SQL Server 2005 ou SQL Server 2008. Cependant, les sauvegardes des bases de données master, model et msdb créées avec SQL Server 2000 ou SQL Server 2005 ne peuvent pas être restaurées par SQL Server 2008. Par ailleurs, les sauvegardes SQL Server 2008 ne peuvent pas être restaurées par les versions antérieures de SQL Server.

SQL Server 2008 utilise un chemin d'accès par défaut différent de celui des versions précédentes. Par conséquent, pour restaurer une base de données créée dans l'emplacement par défaut des sauvegardes SQL Server 2000 ou SQL Server 2005, vous devez utiliser l'option MOVE. Pour plus d'informations sur le nouveau chemin par défaut, consultez Emplacements des fichiers pour les instances par défaut et les instances nommées de SQL Server.

[!REMARQUE]

Pour plus d'informations sur la façon de mettre à niveau une base de données créée à l'aide de SQL Server 7.0 ou d'une version antérieure vers SQL Server 2005, consultez Copie de bases de données à partir de SQL Server 7.0 ou de versions antérieures.

Historique des modifications

Mise à jour du contenu

Dans la section « Restauration d'une base de données complète », la syntaxe pour la restauration d'une sauvegarde de base de données différentielle a été corrigée à l'étape 3.

Dans la section « Restauration d'une base de données complète », l'exemple de code pour la création d'une sauvegarde de fichier journal après défaillance a été corrigé.