Récupérer un numéro séquentiel dans le journal (SQL Server)
S’applique à : SQL Server
Cette rubrique s'applique uniquement aux bases de données employant le mode de récupération complète ou le mode de récupération utilisant les journaux de transactions.
Vous pouvez utiliser un numéro séquentiel dans le journal pour définir le point de récupération d'une opération de restauration. Toutefois, cette fonctionnalité est spécialement conçue pour les fournisseurs d'outils et ne devrait pas être nécessaire dans la plupart des cas.
Vue d'ensemble des numéros séquentiels dans le journal
Les numéros LSN sont utilisés en interne pendant une séquence RESTORE pour rechercher le point dans le temps par rapport auquel les données ont été restaurées. Lorsqu'une sauvegarde est restaurée, les données sont restaurées par rapport au numéro LSN qui correspond au point dans le temps à partir duquel la sauvegarde a été effectuée. Les sauvegardes différentielles et de journaux font passer la base de données restaurée à une date ultérieure qui correspond à un numéro LSN supérieur. Pour plus d’informations sur les LSN, consultez Guide d’architecture et gestion du journal des transactions SQL Server.
Remarque
Les numéros LSN sont des valeurs de type données numeric(25,0). Les opérations arithmétiques (addition ou soustraction, par exemple) ne sont pas significatives et ne doivent pas être utilisées avec les numéros LSN.
Affichage des numéros LSN utilisés par la sauvegarde et la restauration
Le numéro LSN d'un enregistrement de journal dans lequel un événement de sauvegarde et de restauration s'est produit peut être affiché en utilisant une ou plusieurs des commandes suivantes :
Remarque
Les numéros LSN figurent également dans certains messages du journal des erreurs.
Syntaxe Transact-SQL relative à la restauration d'après un LSN
Grâce à l'instruction RESTORE , vous pouvez vous arrêter à un LSN ou immédiatement avant ce point de la façon suivante :
Utilisez la clause WITH STOPATMARK ='lsn:<numéro_lsn>', où lsn:<numéro_lsn> correspond à une chaîne précisant que l’enregistrement du journal qui contient le LSN spécifié équivaut au point de récupération.
STOPATMARK permet la restauration par progression jusqu'au NSE et inclut l'enregistrement correspondant issu du journal, dans la restauration.
Utilisez la clause WITH STOPBEFOREMARK ='lsn:<numéro_lsn>', où lsn:<numéro_lsn> correspond à une chaîne précisant que l’entrée se trouvant dans le journal immédiatement avant celle qui contient le numéro LSN spécifié équivaut au point de récupération.
STOPBEFOREMARK permet la restauration par progression jusqu'au NSE mais exclut l'enregistrement correspondant, se trouvant dans le journal, de la restauration par progression.
De façon générale, une transaction donnée est sélectionnée dans le but d'être incluse ou exclue. Dans la pratique, et ce même s'il n'est pas requis, l'enregistrement spécifié dans le journal correspond à un enregistrement de validation de transaction.
Exemples
L'exemple suivant suppose que la base de données AdventureWorks
a été modifiée afin d'utiliser le mode de récupération complète.
RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'
WITH STOPATMARK = 'lsn:15000000040000037'
GO
Tâches associées
Restaurer une sauvegarde de base de données à l’aide de SSMS
Restaurer une sauvegarde de journal des transactions (SQL Server)
Restaurer une base de données jusqu’au point d’échec en mode de récupération complète (Transact-SQL)
Restaurer une base de données jusqu’à une transaction marquée (SQL Server Management Studio)
Voir aussi
Appliquer les sauvegardes du journal de transactions (SQL Server)
Journal des transactions (SQL Server)
RESTORE (Transact-SQL)
Vue d'ensemble de la restauration et de la récupération (SQL Server)
Guide d’architecture et gestion du journal des transactions SQL Server