Backups da parte final do log (SQL Server)

Aplica-se a:SQL Server

Este artigo se aplica apenas ao backup e à restauração de bancos de dados do SQL Server que usam os modelos de recuperação completo ou bulk-logged.

Um backup do final do log captura todos os registros de log cujo backup ainda não foi feito (o final do log), para evitar perda de trabalho e manter a cadeia do log intacta. Antes de poder recuperar um banco de dados do SQL Server até o ponto mais recente no tempo, você deve realizar o backup da parte final do log de transações. O backup da parte final do log é o último backup relevante no plano de recuperação do banco de dados.

Nem todos os cenários de restauração exigem um backup da parte final do log. Você não precisa de um backup da parte final do log se o ponto de recuperação estiver em um backup de log anterior. Um backup da parte final do log será desnecessário se você estiver movendo ou substituindo (sobrescrendo) um banco de dados e não precisar restaurá-lo para um momento determinado após o seu backup mais recente.

Cenários que exigem um backup da parte final do log

Recomendamos que você faça um backup da parte final do log nos seguintes cenários:

  • Se o banco de dados estiver online e você planeja realizar uma operação de restauração nele, comece fazendo backup da parte final do log. Para evitar um erro em um banco de dados online, você deve usar a opção WITH NORECOVERY da instrução Transact-SQL BACKUP.

  • Se um banco de dados estiver offline e não puder ser iniciado, e você precisar restaurar o banco de dados, primeiro faça backup da parte final do log. Como nenhuma transação pode ocorrer nesse momento, use a opção WITH NO_TRUNCATE. NO_TRUNCATE equivale, na prática, a um backup somente cópia do log de transações. Usar WITH NORECOVERY é opcional porque nenhuma transação pode ocorrer nesse momento.

  • Se um banco de dados estiver danificado, tente fazer um backup da parte final do log usando a opção WITH CONTINUE_AFTER_ERROR da instrução BACKUP.

    Em um banco de dados danificado, o backup do final do log só poderá ser bem-sucedido se os arquivos de log não estiverem danificados, se o banco de dados estiver em um estado que ofereça suporte a backups do final do log e se o banco de dados não contiver nenhuma alteração registrada em massa. Se um backup da parte final do log não puder ser criado, qualquer transação confirmada após o backup de log mais recente será perdida.

A tabela a seguir resume as opções NORECOVERY, NO_TRUNCATE e CONTINUE_AFTER_ERROR para BACKUP.

BACKUP Opção LOG Comentários
NORECOVERY Use NORECOVERY sempre que pretender continuar a fazer uma operação de restauração no banco de dados. NORECOVERY coloca o banco de dados no estado de restauração. Essa etapa garante que o banco de dados não seja alterado após o backup do tail-log. O log é truncado, a menos que a opção NO_TRUNCATE ou COPY_ONLY também seja especificada.

Importante: evite usar NO_TRUNCATE, exceto quando o banco de dados estiver danificado ou offline. Talvez seja necessário colocar o banco de dados no modo de usuário único para ter acesso exclusivo antes de realizar a restauração com NORECOVERY. Após a restauração, retorne o banco de dados ao modo multiusuário.
CONTINUE_AFTER_ERROR Só use CONTINUE_AFTER_ERROR ,se estiver fazendo backup da parte final de um banco de dados danificado.

Quando você faz backup da parte final do log de um banco de dados danificado, alguns dos metadados que são normalmente capturados em backups de log podem não estar disponíveis. Para obter mais informações, consulte a próxima seção.

Backups de tail-log que têm metadados de backup incompletos

Backups da parte final do log capturam a porção final do log mesmo que o banco de dados esteja offline, danificado ou com arquivos de dados ausentes. Isso pode causar metadados incompletos nos comandos de informações de restauração e em msdb. Entretanto, apenas os metadados estão incompletos; o log capturado está completo e utilizável.

Se um backup da parte final do log tiver metadados incompletos, na tabela backupset, has_incomplete_metadata está definido como 1. Além disso, na saída de RESTORE HEADERONLY, HasIncompleteMetadata é definido como 1.

Se os metadados em um backup de tail-log estiverem incompletos, a tabela backupfilegroup ficará sem a maior parte das informações sobre os grupos de arquivos no momento do backup de tail-log. A maioria das colunas da tabela backupfilegroup é de NULL; as únicas colunas significativas são as seguintes:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

Tarefas relacionadas

Para criar um backup da parte final do log, consulte Fazer backup do log de transações quando o banco de dados está danificado (SQL Server).

Para restaurar um backup de log de transações, consulte Restaurar um backup de log de transações (SQL Server).