Partager via


Procédure : Restaurer une base de données à un instantané de base de données (Transact-SQL)

Les instantanés de base de données ne correspondent pas à un stockage redondant et, par conséquent, ils 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 l'instantané de base de données antérieur à 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éé un instantané 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 à un instantané 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 à un instantané de base de données

  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 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 tous les autres instantanés de base de données.

    Pour plus d'informations sur la suppression des instantanés, 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 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).

    Notes

    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.

    Notes

    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 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'un instantané de base de données.

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

L'exemple suivant part du principe qu'un seul instantané existe actuellement sur la base de données AdventureWorks2008R2. 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 Procédure : créer un instantané de base de données (Transact-SQL).

USE master;
-- Reverting AdventureWorks2008R2 to AdventureWorks2008R2_dbss1800
RESTORE DATABASE AdventureWorks2008R2 from 
DATABASE_SNAPSHOT = 'AdventureWorks2008R2_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 :

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