Rétablir une base de données dans l'état d'un instantané de base de données

Si les données d'une base de données en ligne sont endommagées, dans certains cas, rétablir la base de données dans l'état d'un instantané précédant le problème peut être une bonne solution plutôt que de restaurer la base de données à partir d'une sauvegarde. Par exemple, rétablir une base de données peut être utile pour annuler une grave erreur de l'utilisateur, telle que la suppression d'une table. Toutefois, toutes les modifications apportées depuis la création de l'instantané sont perdues.

  • **Avant de commencer : **

    Limitations et restrictions

    Conditions préalables

    Sécurité

  • Pour rétablir une base de données dans l'état d'un instantané de base de données à l'aide de : Transact-SQL

Avant de commencer

Limitations et restrictions

Le rétablissement n'est pas pris en charge dans les conditions suivantes :

  • La base de données doit actuellement posséder un seul instantané de base de données, que vous prévoyez de rétablir.

  • Des groupes de fichiers compressés ou en lecture seule existent dans la base de données.

  • Des fichiers sont maintenant hors connexion alors qu'ils étaient en ligne lors de la création de l'instantané.

Avant de rétablir une base de données, tenez compte des limitations suivantes :

  • Le rétablissement n'est pas destiné à la récupération des supports. . L'instantané de base de données est une copie incomplète des fichiers de base de données, donc si la base de données ou l'instantané de base de données est endommagé, le rétablissement à partir d'un instantané sera probablement impossible. En outre, même lorsque le rétablissement est possible, il est peu probable qu'il permette de corriger le problème en cas de corruption. Par conséquent, effectuer des sauvegardes régulières et tester votre plan de restauration sont essentiels pour la protection d'une base de données. Pour plus d'informations, consultez Sauvegarde et restauration des bases de données SQL Server.

    [!REMARQUE]

    Si vous devez restaurer la base de données source jusqu'à la date et l'heure où vous avez créé un instantané de base de données, utilisez le mode de récupération complète et implémentez une stratégie de sauvegarde qui vous permette une telle opération.

  • La base de données source d'origine est remplacée par la base de données rétablie, donc toutes les mises à jour de la base de données depuis la création de l'instantané sont perdues.

  • L'opération de retour à un état antérieur remplace également l'ancien fichier journal puis le reconstruit. De ce fait, vous ne pouvez plus restaurer la base de données par progression jusqu'à l'erreur de l'utilisateur. Aussi, nous vous recommandons de sauvegarder le journal avant de rétablir une base de données.

    [!REMARQUE]

    Bien que vous ne puissiez pas restaurer le journal original pour restaurer la base de données par progression, les informations qu'il contient peuvent être utiles pour reconstituer les données perdues.

  • Le retour à un état antérieur brise la chaîne de sauvegarde du journal. Aussi, avant d'effectuer les sauvegardes du journal de la base de données ainsi récupérée, vous devez d'abord effectuer une sauvegarde de base de données complète ou une sauvegarde de fichiers. Nous recommandons une sauvegarde de base de données complète.

  • Au cours d'une opération de retour à un état antérieur, l'instantané et la base de données source sont tous deux inaccessibles. Elles sont marquées comme étant en cours de restauration. En cas d'erreur pendant cette opération, lorsque la base de données redémarrera, la restauration tentera de se terminer.

  • Les métadonnées d'une base de données ainsi restituée sont les mêmes qu'au moment de l'instantané.

  • Le rétablissement supprime tous les catalogues de texte intégral.

[Haut de la page]

Configuration préalable requise

Vérifiez que la base de données source et l'instantané de base de données remplissent les conditions préalables suivantes :

[Haut de la page]

Sécurité

Autorisations

Tout utilisateur qui dispose des autorisations RESTORE DATABASE sur la base de données source peut la rétablir dans l'état qui était le sien au moment où l'instantané a été créé.

[Haut de la page]

Comment rétablir une base de données dans l'état d'un instantané de base de données (à l'aide de Transact-SQL)

Pour rétablir une base de données dans l'état d'un instantané de base de données

[!REMARQUE]

Pour obtenir un exemple de cette procédure, consultez Exemples (Transact-SQL), plus loin dans cette section.

  1. Identifiez l'instantané de base de données auquel vous souhaitez restaurer la base de données. Vous pouvez voir les instantanés d'une base de données dans SQL Server Management Studio (consultez Afficher un instantané de base de données (SQL Server)). En outre, vous pouvez identifier la base de données source d'une vue à partir de la colonne source_database_id de l'affichage catalogue sys.databases (Transact-SQL).

  2. Supprimez tous les autres instantanés de base de données.

    Pour plus d'informations sur la suppression des instantanés, consultez supprimer un instantané de base de données (Transact-SQL). Si la base de données utilise le mode de restauration complète, vous devez sauvegarder le journal avant de rétablir la base de données. Pour plus d'informations, consultez Sauvegarder un journal des transactions (SQL Server) ou Sauvegarder le journal des transactions lorsque la base de données est endommagée (SQL Server).

  3. Effectuez l'opération de restauration.

    Une opération de restauration nécessite des autorisations RESTORE DATABASE sur la base de données source. Pour restaurer la base de données, utilisez l'instruction Transact-SQL suivante :

    RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT = database_snapshot_name

    Où database_name est la base de données source et database_snapshot_name le nom de l'instantané auquel vous souhaitez restaurer la base de données. Notez que dans cette instruction, vous devez spécifier un nom d'instantané et non un périphérique de sauvegarde.

    Pour plus d'informations, consultez RESTORE (Transact-SQL).

    [!REMARQUE]

    Pendant l'opération de restauration, l'instantané et la base de données source ne sont pas disponibles. La base de données source et l'instantané sont tous deux signalés « In restore (en restauration) ». Si une erreur se produit pendant l'opération de restauration, cette dernière tentera d'aboutir lors du redémarrage de la base de données.

  4. Si le propriétaire de la base de données a changé depuis la création de l'instantané de base de données, il convient de mettre à jour le propriétaire de la base de données restaurée.

    [!REMARQUE]

    La base de données restaurée conserve les autorisations et la configuration (par exemple, le propriétaire de la base de données et le mode de récupération) de l'instantané de base de données.

  5. Démarrez la base de données.

  6. En option, sauvegardez la base de données restaurée, notamment si elle utilise le mode de récupération complète (ou utilisant les journaux de transactions). Pour sauvegarder une base de données, consultez Créer une sauvegarde complète de base de données (SQL Server).

[Haut de la page]

Exemples (Transact-SQL)

Cette section présente les exemples suivants de rétablissement d'une base de données à un état antérieur par le biais d'un instantané de base de données :

  • A. Rétablissement d'un instantané sur la base de données AdventureWorks

  • B. Rétablissement d'un instantané sur la base de données Sales (Ventes)

A.Rétablissement d'un instantané sur la base de données AdventureWorks

L'exemple suivant part du principe qu'un seul instantané existe actuellement sur la base de données AdventureWorks2012 . Pour voir l'exemple illustrant la création de l'instantané via lequel la base de données est rétablie ici à un état précédent, consultez Créer un instantané de base de données (Transact-SQL).

USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from 
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

B.Rétablissement d'un instantané sur la base de données Sales (Ventes)

Cet exemple suppose que deux instantanés existent actuellement sur la base de données de Sales :  sales_snapshot0600 et sales_snapshot1200. Cet exemple supprime l'instantané le plus ancien et rétablit la base de données au moyen de l'instantané le plus récent.

Pour voir le code servant à créer la base de données et les instantanés donnés en exemple ici, consultez :

  • Pour en savoir plus sur la base de données Sales et l'instantané sales_snapshot0600, consultez « Création d'une base de données avec des groupes de fichiers » et « Création d'un instantané de base de données » dans CREATE DATABASE (Transact-SQL).

  • Pour en savoir plus sur l'instantané sales_snapshot1200, consultez « Création d'un instantané sur la base de données Sales (Ventes) » dans Créer un instantané de base de données (Transact-SQL).

--Test to see if sales_snapshot0600 exists and if it 
-- does, delete it.
IF EXISTS (SELECT dbid FROM sys.databases
    WHERE NAME='sales_snapshot0600')
    DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Tâches associées

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Voir aussi

Référence

RESTORE (Transact-SQL)

sys.databases (Transact-SQL)

Concepts

Instantanés de base de données (SQL Server)

Mise en miroir et instantanés de bases de données (SQL Server)