«

»

jun 20

WITH TRUNCATE_ONLY não funciona!

Problema

Quero esvaziar o Transaction Log no SQL Server 2008 ou 2008R2 com a query abaixo:

BACKUP LOG AdventureWorks2008R2
WITH TRUNCATE_ONLY

Ao rodar esta query obtenho o seguinte erro:

 

truncate_only_2008_error

 

Solução

Este comando remove todas as entradas do transaction log, ou seja, impossibilita restores até um determinado ponto no tempo. Por esta razão, a Microsoft removeu esta opção do SQL Server 2008 em diante. Como somos DBAs responsáveis e sabemos o que estamos fazendo, quando decidimos esvaziar o transaction log é porque sabemos do risco envolvido, porque estamos somente fazendo um lab ou porque nossa política de backup não contempla TLogs.

ATENÇÃO: se você não sabe ao certo o que está fazendo, não prossiga!

Para limpar o transaction log, a opção agora é fazer backup mas como não queremos backup, podemos fazê-lo sem escrever:

BACKUP LOG AdventureWorks2008R2
TO DISK = ‘NUL:’

 

backup_log_nul

 

Agora rode a query da dica Obtendo informações importantes de todas as bases e veja a coluna Log Used % do resultado:

 

log_used_truncate

 

Confirmado que o TLog foi limpo com sucesso!

 

Você também poderia alterar o Recovery Model para SIMPLE e depois para FULL de volta:

 

Use AdventureWorks2008R2
GO
Alter Database Set Recovery Simple
GO
Alter Database Set Recovery Full
GO

 

Só não se esqueça de fazer um novo backup full, senão sua base estará como “Pseudo Simple”, ou seja, funcionando igual ao Simple apesar de estar com o Recovery Model Full.

 

 

 .

3 comentários

  1. Angelo Maximo

    Muito bom Mercante. Pretendo abordar, em um artigo futuro, os motivos pelos quais não se deve fazer truncate nos logs e o que fazer para evitar que os logs cresçam de forma descontrolada.

  2. Marcelo Lucas

    Bom dia Luiz.

    Muito bom este macete.
    Eu costumo resolver alterando o Recovery Model.

    Estas dicas para a comunidade são muito boas, já que o material com estes procedimentos é encontrado (quase sempre) em inglês.

    Abraço!

    Marcelo Lucas

  3. Luiz Mercante

    Muito obrigado Marcelo, que bom que gostou.

    Abraço!

Deixe uma resposta