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.

Foi útil?

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.)

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top