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 completo, 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 completo enquanto o banco de dados estiver online, o banco de dados permanecerá online, mas só poderá ser lido e 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, consulte sys.databases (Transact-SQL). Para descrições de fatores que podem adiar o truncamento de log, consulte O log de transações (SQL Server).

Observação importanteImportante

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, você deve 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

Observação importanteImportante

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.

Observação importanteImportante

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çãoObservaçã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 arquivo de log novo 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

Referência

ALTER DATABASE (Transact-SQL)

sp_add_log_file_recover_suspect_db (Transact-SQL)

Conceitos

Gerenciar o tamanho do arquivo de log de transações

Backups de log de transações (SQL Server)