Recuperar para um número de sequência de log (SQL Server)

Este tópico é relevante apenas para bancos de dados que estejam usando modelos de recuperação completa ou bulk-logged.

Você pode usar um LSN (número de sequência de log) para definir o ponto de recuperação para uma operação de restauração. No entanto, esse é um recurso especializado destinado a fornecedores de ferramentas e provavelmente não é de uso geral.

Visão geral de números de sequência de log

Os LSNs são usados internamente durante uma sequência RESTORE para localizar o point-in-time para o qual os dados foram restaurados. Quando um backup é restaurado, os dados são restaurados ao LSN que corresponde ao point-in-time em que o backup foi realizado. O backup diferencial e o backup de log avançam o banco de dados restaurado para uma hora posterior que corresponde a um LSN mais alto.

Cada registro do log de transações é identificado de forma exclusiva por um LSN (número da sequência de log). Os LSNs são ordenados de tal modo que se LSN2 for maior do que LSN1, a alteração descrita pelo registro de log mencionado por LSN2 ocorreu depois da alteração descrita pelo registro de log LSN.

O LSN de um registro de log no qual ocorreu um evento significativo pode ser útil para construir sequências de restauração corretas. Porque as LSNs são ordenadas, elas podem ser comparadas quanto à igualdade e desigualdade (isto é, <, >, =, <=, >=). Essas comparações são úteis ao construir sequências de restauração.

ObservaçãoObservação

Os LSNs são valores do tipo de dados numeric(25,0). Operações aritméticas (por exemplo, adição ou subtração) não são significativas e não devem ser usadas com LSNs.

[Início]

Exibindo LSNs usados por Backup e Restauração

O LSN de um registro de log no qual um determinado evento de backup e restauração ocorrido pode ser exibido usando um ou mais do seguinte:

ObservaçãoObservação

Os LSNs também aparecem em alguns textos de mensagem.

Sintaxe de Transact-SQL para restaurar para um LSN

Usando uma instrução RESTORE é possível parar no LSN ou imediatamente antes, da seguinte maneira:

  • Use a cláusula WITH STOPATMARK = 'lsn:<lsn_number>', onde lsn:<lsnNumber> é uma cadeia de caracteres que especifica que o registro de log que contém o LSN especificado é o ponto de recuperação.

    O STOPATMARK efetua roll forward para o LSN e inclui o registro de log no roll forward.

  • Use a cláusula WITH STOPATMARK = 'lsn:<lsn_number>', onde lsn:<lsnNumber> é uma sequência que determina que o registro de log imediatamente anterior ao registro de log que contém o número do LSN especificado é o ponto de recuperação.

    O STOPATMARK efetua roll forward para o LSN e exclui o registro de log do roll forward.

Normalmente, uma transação específica é selecionada para ser incluída ou excluída. Embora não seja exigido, na prática, o registro de log especificado é um registro da confirmação de transação.

Exemplos

O exemplo a seguir assume que o banco de dados AdventureWorks foi alterado para usar o modelo de recuperação completa.

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

Tarefas relacionadas

Consulte também

Referência

RESTORE (Transact-SQL)

Conceitos

Aplicar backups de log de transações (SQL Server)

O log de transações (SQL Server)