Che cosa significa LSN in SQL Server?
-
16-09-2019 - |
Domanda
Qual è il significato della sequenza del registro Number? So che è di tipo binario e 10bytes lungo e corrisponde al tempo della transazione avvenga nel DB. Ma questo è un valore data-ora di alta precisione che è memorizzato in qualche formato binario efficiente o si tratta di una funzione di data-ora e qualcos'altro (ad esempio il numero di serie di transazioni che avvengono allo stesso millisecondo). Ho fatto un sacco di ricerche, ma non sono riuscito a trovare una buona risposta a questo.
Uno può spiegare con una formula o una funzione che viene utilizzata per derivare la LSN dalla data-ora o niente.
Soluzione
Ogni record nel SQL Server log delle transazioni è identificato in modo univoco da un numero di sequenza di log (LSN). LSN sono ordinate in modo tale che, se è LSN2 maggiore LSN1, il cambiamento descritto dal record di log di cui a da LSN2 verificato dopo la modifica descritto dal LSN record di log.
qui .
Non si dovrebbe essere preoccupati di come questi vengono generati.
Altri suggerimenti
Si tratta di una sequenza crescente (1,2,3,4, ...), non è un valore di data e ora. Dal Microsoft documentazione :
Il numero di sequenza di log (LSN) il valore è tre parti, incrementando univoco valore. E 'utilizzato per mantenere la sequenza del log delle transazioni record del database. Questo permette SQL Server per mantenere l'ACID proprietà e effettuare appropriato azioni di recupero.
Non v'è alcun modo garantito per derivare, ma si può intuire dal msdb.dbo.backupset
sulla macchina che hai fatto il backup su:
SELECT last_lsn
FROM msdb.dbo.backupset
WHERE backup_start_date = @backup_date
Questa è, naturalmente, non è esatta e non affidabile.
LSN è un numero incrementale generato automaticamente quando le transazioni sono impegnati e il backup è fatto, quindi se si desidera utilizzare tale sequenza per l'uso da tavolo applicazione ciclo while nella vostra per andare a prendere la sequenza e utilizzare i valori -time data.