Partager via


Récupération vers une limite dans le temps spécifique

Cette rubrique concerne uniquement les bases de données SQL Server employant le mode de récupération complète ou le mode de récupération utilisant les journaux de transactions.

Dans le 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 à un point de cette sauvegarde est impossible. La base de données doit être récupérée à la fin de la sauvegarde du journal des transactions.

Pour restaurer à un point précis dans le temps

Syntaxe Transact-SQL pour effectuer une restauration limitée dans le temps

La restauration d'une heure spécifiée est toujours effectuée à partir d'une sauvegarde de fichier journal. Dans chaque instruction RESTORE LOG de la séquence de restauration, vous devez spécifier votre heure cible ou votre transaction dans une clause STOPAT identique. Comme condition préalable dans une restauration limitée dans le temps, vous devez restaurer une sauvegarde complète de base de données dont le point d'arrêt est antérieur à votre heure de restauration cible. Cette sauvegarde complète de base de données peut être plus ancienne que la sauvegarde complète de base de données la plus récente dans la mesure où vous restaurez ensuite chaque sauvegarde de fichier journal suivante jusqu'à la sauvegarde de fichier journal (comprise) contenant votre limite dans le temps cible.

Pour vous aider à identifier la sauvegarde de base à restaurer, vous pouvez éventuellement spécifier votre clause WITH STOPAT dans l'instruction RESTORE DATABASE afin de générer une erreur lorsqu'une sauvegarde de données est trop récente pour l'heure cible spécifiée. La sauvegarde de données complète est toujours restaurée, même si elle contient l'heure cible.

La syntaxe de base est la suivante :

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

Le point de récupération est la dernière validation de transaction qui s'est produite à la valeur datetime spécifiée par time ou avant.

Pour restaurer uniquement les modifications avant un moment spécifique dans le temps, spécifiez WITH STOPAT = time pour chaque sauvegarde que vous restaurez. De cette manière, vous êtes certain de ne pas dépasser le moment cible.

Généralement, une séquence de restauration limitée dans le temps comprend les étapes suivantes :

  • Restaurez la dernière sauvegarde complète et, si elle existe, la dernière sauvegarde différentielle, sans récupérer la base de données (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  • Appliquez chaque sauvegarde du journal des transactions dans l'ordre de leur création, en spécifiant l'heure à laquelle vous avez l'intention d'arrêter la restauration du journal (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

Pour plus d'informations, consultez Restauration d'une base de données vers un point dans une sauvegarde.