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:
Como as marcas de transação consomem espaço de log, só as use para transações que têm um papel significativo na estratégia de recuperação de banco de dados.
Depois que a transação marcada é confirmada, uma linha é inserida na tabela logmarkhistory no msdb.
Se uma transação marcada abrange vários bancos de dados no mesmo servidor de banco de dados ou em servidores diferentes, as marcas devem ser registradas nos logs de todos os bancos de dados afetados. Para obter mais informações, veja Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente (Modelo de recuperação completa).
Observação
Para obter informações sobre como marcar transações, veja Usar transações marcadas para recuperar bancos de dados relacionados de forma consistente (Modelo de recuperação completa).
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)
Preparando os backups de log
Para este exemplo, uma estratégia de backup apropriada para estes bancos de dados relacionados seria a seguinte:
Use o modelo de recuperação completa para ambos os bancos de dados.
Crie um backup completo de cada banco de dados.
Os backups dos bancos de dados podem ser feitos consecutivamente ou simultaneamente.
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).
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
Crie backups da parte final do log dos bancos de dados não danificados, se possível.
Restaure o backup completo mais recente do banco de dados de cada banco de dados.
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.
Identifique os backups de log para todos os bancos de dados relacionados que contêm essa marca.
Restaure cada backup de log, parando na transação marcada.
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)