Restauration d'une base de données vers un point dans une sauvegarde
Cette rubrique s'applique uniquement aux bases de données SQL Server qui utilisent le mode de restauration complète ou de récupération qui utilisent les journaux de transactions.
Vous pouvez restaurer et récupérer une base de données vers un point ou une marque dans le temps spécifique, ou le numéro séquentiel dans le journal avant un point d'échec. Si, par exemple, une transaction a modifié des données de manière incorrecte, vous pouvez restaurer la base de données vers un point de récupération juste avant l'entrée des données incorrectes. Toute restauration qui définit le point de récupération de la base de données est appelée limite de restauration dans le temps.
L'illustration suivante montre une restauration à un point de récupération dans le milieu d'un journal de transactions qui a été prise à l'instant t9. Les modifications dans le reste de cette sauvegarde et la sauvegarde de fichier journal suivante prise à l'instant t10 sont ignorées.
Le point de récupération cible est spécifié à l'aide d'un des éléments suivants :
Moment spécifique dans un journal de transactions
Marque nommée ayant été insérée dans un enregistrement du journal des transactions
Numéro séquentiel dans le journal
[!REMARQUE]
La récupération vers un NSE est une fonctionnalité spécialement conçue pour les fournisseurs d'outils et ne devrait pas être nécessaire dans la majorité des cas.
Une heure ou une transaction spécifiée est toujours restaurée à partir d'une sauvegarde de fichier journal ; ainsi le point de récupération cible doit figurer dans une sauvegarde du journal de transactions. Pour restaurer une base de données à une limite dans le temps ou à une transaction spécifique, spécifiez le point de récupération cible dans une clause STOPAT, STOPATMARK ou STOPBEFOREMARK. Dans chaque instruction RESTORE LOG de la séquence de restauration, vous devez spécifier l'heure ou la transaction cible dans une clause STOPAT, STOPATMARK ou STOPBEFOREMARK. Lorsque vous appliquez la sauvegarde de fichier journal contenant le point de récupération, vous pouvez récupérer uniquement les transactions qui précèdent ce point.
Comme condition préalable dans une limite de restauration 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 point de récupération cible. Pour vous aider à identifier la sauvegarde de base de données à restaurer, vous pouvez éventuellement spécifier votre clause WITH STOPAT, STOPATMARK ou STOPBEFOREMARK dans une instruction RESTORE DATABASE pour générer une erreur si une sauvegarde des données est trop récente pour le point dans le temps cible spécifié. La sauvegarde de données complète est cependant toujours restaurée, même si elle contient l'heure cible.
[!REMARQUE]
La sauvegarde de fichier journal doit aussi figurer dans le même chemin de récupération que la sauvegarde de base de données complète ou la sauvegarde partielle restaurée au début de la séquence de restauration limitée dans le temps.
Au terme de la récupération, l'heure de la base de données est déterminée par le point de récupération dans le temps vers lequel vous avez récupéré le fichier principal. Les restaurations suivantes éventuelles doivent disposer de points de récupération qui soient cohérents avec la base de données à cette date et à cette heure.
Si une séquence de restauration partielle exclut tout groupe de fichiers FILESTREAM, la limite de restauration dans le temps n'est pas prise en charge. Vous pouvez imposer à la séquence de restauration de continuer. Cependant, les groupes de fichiers FILESTREAM omis à partir de l'instruction RESTORE ne pourront jamais être restaurés. Pour forcer une restauration limitée dans le temps, spécifiez l'option CONTINUE_AFTER_ERROR avec l'option STOPAT, STOPATMARK ou STOPBEFOREMARKx, que vous devez également spécifier dans vos instructions RESTORE LOG suivantes. Si vous spécifiez l'option CONTINUE_AFTER_ERROR, la séquence de restauration partielle réussit et le groupe de fichiers FILESTREAM devient irrécupérable.
[!REMARQUE]
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 vers la fin d'une sauvegarde du journal des transactions.
Dans cette section
Meilleures pratiques pour la récupération d'une base de données jusqu'à un point de récupération spécifique
Traite de plusieurs méthodes conseillées relatives à la restauration d'une base de données à un point de récupération spécifique.Récupération vers une limite dans le temps spécifique
Contient des informations sur la manière d'effectuer une récupération vers un point dans le temps, en récupérant uniquement les transactions qui ont eu lieu avant un point dans le temps spécifique dans une sauvegarde de journaux de transactions plutôt que dans une sauvegarde complète.Récupération jusqu'à une transaction marquée
Contient des informations sur la manière d'effectuer une récupération vers ou juste avant une marque préalablement insérée dans le journal des transactions.Récupération d'un numéro séquentiel dans le journal
Contient des informations sur la manière d'utiliser un numéro séquentiel dans le journal pour définir le point de récupération d'une opération de restauration.
Voir aussi