Procédure : restaurer une base de données à une capture instantanée de base de données (Transact-SQL)

Les captures instantanées de base de données ne correspondent pas à un stockage redondant et, par conséquent, elles n'offrent aucune protection contre des erreurs disque ou d'autres types d'endommagement. Toutefois, si une erreur de l'utilisateur se produit dans une base de données en ligne, vous pouvez rétablir la base de données à l'aide de la capture instantanée de base de données antérieure à l'erreur.

Important

La réalisation de sauvegardes régulières et le test de votre plan de restauration sont essentiels pour la protection d'une base de données. Si vous devez restaurer la base de données source au point dans le temps où vous avez créé une capture instantanée de base de données, implémentez une stratégie de sauvegarde qui vous permette une telle opération.

La restauration remplace la base de données d'origine par la base de données restaurée. Le retour à une capture instantanée supprime tous les catalogues de texte intégral.

Important

Avant de rétablir la base de données, vous devez vous familiariser avec les informations de Retour à une capture instantanée de base de données.

Pour restaurer une base de données à une capture instantanée de base de données

  1. Identifiez la capture instantanée de base de données à laquelle vous souhaitez restaurer la base de données. Vous pouvez voir les captures instantanées d'une base de données dans SQL Server Management Studio (consultez Procédure : afficher une capture instantanée de base de données (SQL Server Management Studio)). 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 toutes les autres captures instantanées de base de données.

    Pour plus d'informations sur la suppression de captures instantanées, consultez Procédure : supprimer une capture instantanée 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 Procédure : sauvegarder un journal des transactions (SQL Server Management Studio) ou Procédure : sauvegarde du journal des transactions lorsque la base de données est endommagée (Transact-SQL).

  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 la capture instantanée à laquelle vous souhaitez restaurer la base de données. Notez que dans cette instruction, vous devez spécifier un nom de capture instantanée et non un périphérique de sauvegarde.

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

    [!REMARQUE]

    Pendant l'opération de restauration, la capture instantanée et la base de données source ne sont pas disponibles. La base de données source et la capture instantanée sont toutes deux signalées « 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 la capture instantanée 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 la capture instantanée 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 restauration complète (ou utilisant les journaux de transactions). Pour plus d'informations sur la sauvegarde de la base de données, consultez Procédure : sauvegarder une base de données (SQL Server Management Studio) ou Procédure : créer une sauvegarde complète de base de données (Transact-SQL).

Exemple

Cette section présente des exemples de rétablissement d'une base de données à un état antérieur par le biais d'une capture instantanée de base de données.

A. Rétablissement d'une capture instantanée sur la base de données AdventureWorks

L'exemple suivant part du principe qu'une seule capture instantanée existe actuellement sur la base de données AdventureWorks. Pour voir l'exemple illustrant la création de la capture instantanée via laquelle la base de données est rétablie ici à un état précédent, consultez Procédure : créer une capture instantanée 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'une capture instantanée sur la base de données Sales (Ventes)

Cet exemple suppose qu'il existe actuellement deux captures instantanées dans la base de données Sales : sales_snapshot0600 et sales_snapshot1200. Cet exemple supprime la capture instantanée la plus ancienne et rétablit la base de données au moyen de la capture instantanée la plus récente.

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

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