Qu'est-ce que signifie LSN dans SQL Server?
-
16-09-2019 - |
Question
Quelle est la signification du journal numéro de séquence? Je sais qu'il est de type binaire et 10bytes long et elle correspond au moment où la transaction se produit dans DB. Mais est-ce une valeur date-heure de haute précision qui est stocké dans un format binaire efficace ou est-ce une fonction de date-heure et quelque chose d'autre (par exemple le numéro de série de transactions qui se produisent au même milli secondes). Je l'ai fait beaucoup de recherche, mais n'a pas pu trouver une bonne réponse à cette question.
Peut-on expliquer une formule ou une fonction qui est utilisée pour calculer la LSN de date-heure ou quoi que ce soit.
La solution
Chaque enregistrement dans le SQL Server journal des transactions est identifié de manière unique par un numéro de séquence de consignation (LSN). LSN sont ordonnées de telle façon que si LSN2 est supérieure à LSN1, le changement décrit par l'enregistrement du journal visé par LSN2 a eu lieu après le changement décrit par l'enregistrement du journal LSN.
Vous ne devriez pas être concerné par la façon dont ceux-ci sont générés.
Autres conseils
Il est une suite croissante (1,2,3,4, ...), pas une valeur de date et heure. De la documentation Microsoft :
Le numéro de séquence de consignation (LSN) valeur est en trois parties, incrémenter unique valeur. Il est utilisé pour maintenir la séquence du journal des transactions enregistrements dans la base de données. Ceci permet Serveur SQL pour maintenir l'acide propriétés et d'effectuer approprié actions de récupération.
Il n'y a pas moyen sûr de tirer, mais vous pouvez le deviner à partir msdb.dbo.backupset
sur la machine que vous avez fait la sauvegarde sur:
SELECT last_lsn
FROM msdb.dbo.backupset
WHERE backup_start_date = @backup_date
Ceci est bien sûr pas exacte et pas fiables.
LSN est un nombre supplémentaire lorsque les transactions générées automatiquement sont engagés et la sauvegarde se fait, donc si vous voulez utiliser cette séquence à l'utilisation de table d'application en boucle dans votre chercher la séquence et d'utiliser les valeurs de -time date.