Partilhar via


Solução de problemas em um log de transação completa (SQL Server Erro 9002)

Este tópico aborda as respostas possíveis a um log de transações completo e sugere como evitar isso no futuro. Quando o log de transações fica cheio, o mecanismo de banco de dados do SQL Server emite um erro 9002. O log pode ficar completo quando o banco de dados estiver online ou em recuperação. Se o log ficar cheio enquanto o banco de dados estiver online, o banco de dados permanecerá online, mas só poderá ser lido, não atualizado. Se o log ficar completo durante uma recuperação, o Mecanismo de Banco de Dados marcará o banco de dados como RESOURCE PENDING. Em qualquer caso, é necessária a ação do usuário para liberar espaço no log.

Respondendo a um log de transações completo

A resposta apropriada a um log de transações completo depende em parte das condições que o fizeram ficar completo. Para descobrir o que está impedindo o truncamento de log em um determinado caso, use as colunas log_reuse_wait e log_reuse_wait_desc da exibição de catálogo do sys.database. Para obter mais informações, confira sys.databases (Transact-SQL). Para descrições de fatores que podem adiar o truncamento de log, confira O log de transações (SQL Server).

Importante

Se o banco de dados estava em recuperação quando o erro 9002 aconteceu, depois de resolver o problema, recupere o banco de dados usando ALTER DATABASE database_name SET ONLINE.

As alternativas para responder a um log de transações completo incluem:

  • Fazer backup do log.

  • Liberar espaço de disco para que o log possa crescer automaticamente.

  • Mover o arquivo de log para uma unidade de disco com espaço suficiente.

  • Aumentar o tamanho de um arquivo de log.

  • Adicionar um arquivo de log a um disco diferente.

  • Completar ou cancelar uma transação demorada.

Essas alternativas são discutidas nas seções seguintes. Escolha uma resposta que se ajuste melhor a sua situação.

Fazendo backup de log

No modelo de recuperação completa ou no modelo de recuperação bulk-logged, se não foi feito backup do log de transações recentemente, pode ser que o backup esteja impedindo o truncamento de log. Se nunca foi feito backup do log, é necessário criar dois backups de log para permitir que o Mecanismo de Banco de Dados trunque o log no ponto do último backup. Truncar o log libera espaço para novos registros de log. Para impedir que o log fique completo novamente, faça backups de log frequentes.

Para criar um backup de log de transações

Importante

Se o banco de dados estiver danificado, consulte Backups da parte final do Log (SQL Server).

Liberando espaço no disco

Pode ser possível liberar espaço de disco na unidade de disco que contém o arquivo de log de transações do banco de dados excluindo ou movendo outros arquivos. O espaço de disco liberado permite que o sistema de recuperação aumente o arquivo de log automaticamente.

Movendo o arquivo de log para um disco diferente

Se você não puder liberar espaço de disco suficiente na unidade que contém o arquivo de log, pense em mover o arquivo para outra unidade com espaço suficiente.

Importante

Arquivos de log nunca devem ser colocados em sistemas de arquivos compactados.

Para mover um arquivo de log

Aumentando o tamanho de um arquivo de log

Se houver espaço disponível no disco de log, você pode aumentar o tamanho do arquivo de log. O tamanho máximo para arquivos de log é de dois terabytes (TB) por arquivo de log.

Para aumentar o tamanho de arquivo

Se o aumento automático estiver desabilitado, o banco de dados estiver online e houver espaço suficiente disponível no disco, as ações possíveis serão:

  • Aumentar manualmente o tamanho de arquivo para produzir um único incremento de crescimento.

  • Ativar o crescimento automático usando a instrução ALTER DATABASE para definir um incremento de crescimento diferente de zero para a opção FILEGROWTH.

Observação

Em qualquer caso, se o limite de tamanho atual foi alcançado, aumente o valor MAXSIZE.

Adicionando um arquivo de log a um disco diferente

Adicione um novo arquivo de log ao banco de dados em um disco diferente que tenha espaço suficiente usando ALTER DATABASE <database_name> ADD LOG FILE.

Para adicionar um arquivo de log

Consulte Também

ALTER DATABASE (Transact-SQL)
Gerenciar o tamanho do arquivo de log de transações
Backups de log de transações (SQL Server)
sp_add_log_file_recover_suspect_db (Transact-SQL)