Partilhar via


Recuperação de bancos de dados relacionados que contêm transação marcada

Aplica-se a: SQL Server

Este tópico é relevante apenas para os bancos de dados que contêm transações marcadas e que usam modelos de recuperação bulk-logged ou completos.

Para obter informações sobre os requisitos de restauração para um ponto de recuperação específico, veja Restaurar um banco de dados SQL Server em um ponto específico (Modelo de recuperação completa).

O SQL Server dá suporte à inserção de marcas nomeadas no log de transações, permitindo a recuperação nessa marca específica. As marcas de log são transações específicas e são inseridas apenas se as suas transações associadas forem confirmadas. Desse modo, as marcas podem ser ligadas ao trabalho específico e você pode recuperá-las em um ponto que inclua ou exclua esse trabalho.

Antes de você inserir marcas nomeadas no log de transações, considere o seguinte:

Sintaxe Transact-SQL para inserir marcas nomeadas em um log de transações

Para inserir marcas nos logs de transações, use a instrução BEGIN TRANSACTION e a cláusula WITH MARK [descrição]. A marca é nomeada igual à transação. A descrição opcional é uma descrição textual da marca, não o nome da marca. Por exemplo, o nome da transação e da marca criado na seguinte instrução BEGIN TRANSACTION é Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'    

O log de transações registra o nome da marca (nome da transação), descrição, banco de dados, usuário, informações de datetime e o LSN (número de sequência de log). As informações de datetime são usadas junto com o nome da marca para identificar a marca com exclusividade.

Para obter informações sobre como inserir uma marca em uma transação que abrange vários bancos de dados, veja Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente (Modelo de recuperação completa).

Sintaxe Transact-SQL para recuperar a uma marca

Ao direcionar uma transação marcada ao usar uma instrução RESTORE LOG, é possível usar uma das seguintes cláusulas para realizar uma interrupção na marcação ou imediatamente antes dela:

  • Use a cláusula WITH STOPATMARK = '<nome_marca>' para especificar que a transação marcada é o ponto de recuperação.

    O STOPATMARK roll-forward até a marca e inclui a transação marcada no roll-forward.

  • Use a cláusula WITH STOPBEFOREMARK = '<nome_marca>' para especificar que o registro de log que está imediatamente antes da marca é o ponto de recuperação.

    O STOPATMARK roll-forward até a marca e exclui a transação marcada do roll-forward.

Ambas as opções STOPATMARK e STOPBEFOREMARK dão suporte a uma cláusula opcional AFTER datetime . Quando datetime é usado, os nomes da marca não precisam ser exclusivos.

Se AFTER datetime for omitido, o roll forward será interrompido na primeira marca que tem o nome especificado. Se AFTER datetime for especificado, o roll forward será interrompido na primeira marca que tem o nome especificado, exatamente em datetimeou após ele.

Observação

Como em todas as operações de restauração point-in-time, não é permitido recuperar a uma marca quando o banco de dados estiver passando por operações com log de operações em massa.

Para restaurar a uma transação marcada

Restaurar um banco de dados para uma transação marcada (SQL Server Management Studio)

RESTORE (Transact-SQL)

Preparando os backups de log

Para este exemplo, uma estratégia de backup apropriada para estes bancos de dados relacionados seria a seguinte:

  1. Use o modelo de recuperação completa para ambos os bancos de dados.

  2. Crie um backup completo de cada banco de dados.

    Os backups dos bancos de dados podem ser feitos consecutivamente ou simultaneamente.

  3. Antes de fazer o backup do log de transações, marque uma transação que execute em todos os bancos de dados. Para obter informações sobre como criar as transações marcadas, veja Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente (Modelo de recuperação completa).

  4. Faça o backup do log de transações em cada banco de dados.

Recuperando um banco de dados a uma transação marcada

Para restaurar o backup

  1. Crie backups da parte final do log dos bancos de dados não danificados, se possível.

  2. Restaure o backup completo mais recente do banco de dados de cada banco de dados.

  3. Identifique a transação marcada mais recente disponível em todos os backups de log de transações. Essa informação é armazenada na tabela logmarkhistory no banco de dados msdb em cada servidor.

  4. Identifique os backups de log para todos os bancos de dados relacionados que contêm essa marca.

  5. Restaure cada backup de log, parando na transação marcada.

  6. Recupere cada banco de dados.

Confira também

BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
Aplicar backups de log de transações (SQL Server)
Usar transações marcadas para recuperar bancos de dados relacionados consistentemente (modelo de recuperação completa)
Visão geral da restauração e recuperação (SQL Server)
Restaurar um banco de dados do SQL Server até um ponto determinado (modelo de recuperação completa)
Planejar e realizar sequências de restauração (modelo de recuperação completa)