Recupero fino a un numero di sequenza del file di log (SQL Server)Recover to a Log Sequence Number (SQL Server)

Le informazioni contenute in questo argomento sono rilevanti solo per i database che utilizzano il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.This topic is relevant only for databases that are using the full or bulk-logged recovery models.

È possibile utilizzare un numero di sequenza del file di log (LSN) per definire il punto di recupero per un'operazione di ripristino.You can use a log sequence number (LSN) to define the recovery point for a restore operation. Si tratta tuttavia di una funzionalità specializzata progettata per i fornitori di strumenti e viene utilizzata solo in rari casi.However, this is a specialized feature that is intended for tools vendors and is unlikely to be generally useful.

Panoramica dei numeri di sequenza del file di log Overview of Log Sequence Numbers

Gli LSN sono utilizzati internamente durante una sequenza RESTORE per tenere traccia del momento specifico rispetto al quale i dati sono stati ripristinati.LSNs are used internally during a RESTORE sequence to track the point in time to which data has been restored. Quando un backup viene ripristinato, i dati vengono ripristinati sull'LSN corrispondente al momento specifico di esecuzione del backup.When a backup is restored, the data is restored to the LSN corresponding to the point in time at which the backup was taken. Backup dei log e differenziali spostano il database ripristinato a un momento successivo, corrispondente a un LSN maggiore.Differential and log backups advance the restored database to a later time, which corresponds to a higher LSN.

Ogni record presente nel log delle transazioni è identificato in modo univoco da un numero di sequenza dei file di log (LSN).Every record in the transaction log is uniquely identified by a log sequence number (LSN). Gli LSN sono ordinati in modo tale che se LSN è maggiore di LSN1, la modifica descritta dal record di log cui fa riferimento LSN2 si verifica dopo la modifica descritta dall'LSN del record di log.LSNs are ordered such that if LSN2 is greater than LSN1, the change described by the log record referred to by LSN2 occurred after the change described by the log record LSN.

L'LSN di un record di log in corrispondenza del quale si è verificato un evento significativo può essere utile per creare sequenze di ripristino corrette.The LSN of a log record at which a significant event occurred can be useful for constructing correct restore sequences. Essendo ordinati, gli LSN possono essere confrontati in termini di uguaglianza e disuguaglianza, ovvero <, >, =, <=, >=.Because LSNs are ordered, they can be compared for equality and inequality (that is, <, >, =, <=, >=). Questi confronti sono utili nella creazione di sequenze di ripristino.Such comparisons are useful when constructing restore sequences.

Nota

Gli LSN sono valori di tipo di dati numerici(25,0).LSNs are values of data type numeric(25,0). Gli operatori matematici, ad esempio addizione o sottrazione, non sono significativi e non devono essere utilizzati con gli LSN.Arithmetic operations (for example, addition or subtraction) are not meaningful and must not be used with LSNs.

Visualizzazione degli LSN utilizzati tramite backup e ripristinoViewing LSNs Used by Backup and Restore

L'LSN di un record di log in corrispondenza del quale si è verificato un determinato evento di backup e di ripristino è visibile utilizzando una o più delle istruzioni seguenti:The LSN of a log record at which a given backup and restore event occurred is viewable using one or more of the following:

Nota

Gli LSN sono inoltre visualizzati nel testo di alcuni messaggi.LSNs also appear in some message texts.

Sintassi Transact-SQL per il ripristino fino a un numero di sequenza del file di log (LSN)Transact-SQL Syntax for Restoring to an LSN

Un'istruzione RESTORE consente di arrestare il processo esattamente in corrispondenza dell'LSN o immediatamente prima, come illustrato di seguito:By using a RESTORE statement, you can stop at or immediately before the LSN, as follows:

  • Usare la clausola WITH STOPATMARK ='lsn:<numero_lsn>', dove lsn:<Numerolsn> è una stringa che specifica che il punto di recupero corrisponde al record di log contenente l'LSN specificato.Use the WITH STOPATMARK ='lsn:<lsn_number>' clause, where lsn:<lsnNumber> is a string that specifies that the log record that contains the specified LSN is the recovery point.

    STOPATMARK esegue il rollforward al numero di sequenza del file di log (LSN) includendo anche tale record del log.STOPATMARK roll forwards to the LSN and includes that log record in the roll forward.

  • Usare la clausola WITH STOPBEFOREMARK ='lsn:<numero_lsn>', dove lsn:<Numerolsn> è una stringa che specifica che il punto di recupero corrisponde al record di log immediatamente precedente a quello contenente l'LSN specificato.Use the WITH STOPBEFOREMARK ='lsn:<lsn_number>' clause, where lsn:<lsnNumber> is a string that specifies that the log record immediately before the log record that contains the specified LSN number is the recovery point.

    Tramite STOPBEFOREMARK viene eseguito il rollforward fino all'LSN escludendo tale record di log.STOPBEFOREMARK rolls forward to the LSN and excludes that log record from the roll forward.

    In genere, viene selezionata una transazione specifica da includere o escludere.Typically, a specific transaction is selected to be included or excluded. Sebbene non sia necessario, il record di log specificato è in pratica un record di commit delle transazioni.Although not required, in practice, the specified log record is a transaction-commit record.

EsempiExamples

Nell'esempio seguente si presuppone che il database AdventureWorks sia stato modificato in modo da utilizzare il modello di recupero con registrazione completa.The following example assumes that the AdventureWorks database has been changed to use the full recovery model.

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

Vedere ancheSee Also

Applicare backup log delle transazioni (SQL Server) Apply Transaction Log Backups (SQL Server)
Log delle transazioni (SQL Server) The Transaction Log (SQL Server)
RESTORE (Transact-SQL)RESTORE (Transact-SQL)