O arquivo de log do banco de dados está cheio
-
09-06-2019 - |
Pergunta
Portanto, nosso SQL Server 2000 está apresentando o erro: "O arquivo de log do banco de dados está cheio.Faça backup do log de transações do banco de dados para liberar espaço de log."
Como faço para corrigir isso sem excluir o log, como alguns outros sites mencionaram?
Informação adicional:Habilitar AutoGrowth está habilitado para crescer 10% e está restrito a 40 MB.
Solução
Scott, como você adivinhou:truncar o log é uma má jogada se você se preocupa com seus dados.
Os vídeos gratuitos a seguir ajudarão você a ver exatamente o que está acontecendo e mostrarão como corrigir o problema sem truncar os registros.(Esses vídeos também explicam por que esse hack é tão perigoso e por que você está certo em procurar outra solução.)
- Backups do SQL Server desmistificados
- Fundamentos de registro do SQL Server
- Compreendendo as opções de backup
Juntos, esses vídeos ajudarão você a entender exatamente o que está acontecendo e mostrarão se você deseja mudar para a recuperação SIMPLES ou se deseja realmente alterar suas rotinas de backup.Existem também alguns vídeos adicionais de "como fazer" que mostrarão exatamente como configurar seus backups para garantir a disponibilidade enquanto gerencia o tamanho e o crescimento dos arquivos de log.
Outras dicas
Para apenas esvaziá-lo:
backup log <dbname> with truncate_only
Para salvá-lo em algum lugar:
backup log <dbname> to disk='c:\somefile.bak'
Se você realmente não precisa do histórico transacional, tente definir o modo de recuperação do banco de dados como simples.
Faça backup dos logs do seu banco de dados regularmente se precisar recuperar até o minuto ou fazer outras coisas divertidas, como envio de logs no futuro, ou definir o banco de dados para o modo simples e reduzir o arquivo de dados.
NÃO copie, renomeie ou exclua o arquivo .ldf, pois isso danificará seu banco de dados e, após a recuperação, você poderá ter dados em um estado inconsistente, tornando-os inválidos.
Não creio que renomear ou mover o arquivo de log funcione enquanto o banco de dados estiver online.
A coisa mais fácil de fazer, IMO, é abrir as propriedades do banco de dados e alterná-lo para o Simple Recovery Model.em seguida, reduza o banco de dados e volte e defina o banco de dados como Full Recoery Model (ou qualquer modelo que você precise).
Alterar o modo de log força o SQL Server a definir um ponto de verificação no banco de dados, após o qual reduzir o banco de dados liberará o espaço em excesso.
Meu amigo que enfrentou esse erro no passado recomenda:
Tentar
- Fazendo backup do banco de dados.O plano de manutenção inclui truncamento desses arquivos.
- Tente também alterar o 'modo de recuperação' do banco de dados para Simples (em vez de Completo por exemplo)
Causa:O log de transações aumenta devido aos eventos sendo registrados (talvez você tenha uma série de transações falhando e sendo revertidas.ou um pico repentino nas transações no servidor)
Você pode querer verificar a pergunta SO relacionada:
Bem, você pode fazer uma cópia do log de transações e truncar o arquivo de log, que é o que a mensagem de erro sugere.
Se o espaço em disco estiver cheio e você não conseguir copiar o log para outra máquina pela rede, conecte uma unidade via USB e copie-a dessa forma.
Você tem a resposta em sua pergunta:Faça backup do log e ele será reduzido.Faça um plano de manutenção para fazer backup regularmente do banco de dados e não se esqueça de selecionar “Fazer backup do log de transações”.Dessa forma, você o manterá pequeno.
Se for um não uso do ambiente de produção
dump tran <db_name> with no_log;
Quando isso for concluído, reduza o arquivo de log para liberar espaço em disco.Por fim, mude o modo de recuperação do banco de dados para simples.
Assim que você fizer um backup completo do banco de dados e o banco de dados não estiver usando o modelo de recuperação Simples, o SQL Server manterá um registro completo de todas as transações já realizadas no banco de dados.Ele faz isso para que, no caso de uma falha catastrófica em que você perca o arquivo de dados, você possa restaurar o ponto de falha fazendo backup do log e, depois de restaurar um backup de dados antigo, restaurar o log para reproduzir o arquivo perdido. transações.
Para evitar esse acúmulo, você deve fazer backup do log de transações.Ou você pode quebrar a cadeia no ponto atual usando as opções TRUNCATE_ONLY ou NO_LOG do BACKUP LOG.
Se você não precisar desse recurso, defina o modelo de recuperação como Simples.
Meu caro amigo, é muito importante para um DBA verificar seu arquivo de log com bastante frequência.Porque se você não der muita atenção algum dia vai dar esse erro.
Para isso é necessário fazer backups periódicos para que o arquivo de logs não enfrente tal erro.
Fora isso, a sugestão dada acima está correta.
Renomeie-o.por exemplo:
log-antigo-16-09-08.log
Então o servidor SQL pode usar um novo vazio.