Solucionando problemas em um log de transação completa (Erro 9002)

Este tópico discute 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.

ObservaçãoObservação

Em geral, quando o log de transações fica sem espaço em disco, o banco de dados ainda pode ser acessado em modo somente leitura. Entretanto, quando o nível de isolamento do instantâneo estiver habilitado, se você estiver excluindo uma linha em um heap (uma tabela sem índice clusterizado) e o log de transações for preenchido antes de o registro de log da linha fantasma persistir, o banco de dados ficará offline. Se isto ocorrer, o banco de dados reiniciará automaticamente, passará por uma recuperação completa e voltará a ficar online.

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 Fatores que podem atrasar o truncamento de log.

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.

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

Identifique e gerencie uma transação demorada

Para obter mais informações, consulte Gerenciando transações demoradas.