Problema completo do log de transações com o SQL Server 2008 R2

1

Estou com problema de 'log de transação cheio' com o SQL Server 2008 R2.

Meu banco de dados inclui 80.000 tabelas que contém até 5 colunas do BIGINT e há um índice para cada coluna.

O modelo de recuperação do banco de dados está definido como simples.

O padrão de trabalho com o banco de dados é conduzir um grande número de comandos de inserção, atualização e exclusão em massa por cerca de 50 horas, enquanto que durante um determinado período há apenas 8 comandos sendo executados no mesmo período de tempo.

O arquivo de log de transações foi definido para crescimento automático em 10% e foi limitado a 2.000 GB (isso foi definido por engano, pois o tamanho do disco é de apenas 500 GB).

A exceção 'log de transações completa' ocorreu enquanto o banco de dados executava os comandos descritos acima e seu tamanho de arquivo era de 41 GB e o arquivo de log era de 270 GB que usam todo o espaço em disco.

Para evitar que o problema ocorra novamente, definimos o tamanho máximo do arquivo de log como 20 GB e removemos todas as transações nos comandos descritos acima (já que o uso da transação não era necessário).

Mas infelizmente passamos por essa exceção novamente enquanto o arquivo de log atingiu o limite de 20 GB.

É possível que o servidor SQL não trunque o arquivo de log devido ao fato de o servidor estar sempre executando comandos e, portanto, não há um único momento em que o log de transações não esteja em uso?

Qual pode ser a razão para esse comportamento?

    
por DoronBM 03.05.2011 / 12:11

2 respostas

1

O log de transações está crescendo provavelmente porque você fez essas operações em uma única transação em vez de dividi-las em transações menores. Por exemplo, se você excluir 1 ML registra todas as conexões, a operação será inserida primeiro no log de transações e depois confirmada no banco de dados. Mas se você dividir a exclusão em transações menores, digamos 10.000 registros cada, o log de transações será menor e você estará seguro com o espaço disponível em disco.

    
por 03.05.2011 / 12:50
0

É possível que você tenha uma única transação em execução antes de iniciar essa execução de dados? Os logs de transações são gravados sequencialmente e seções do arquivo só podem ser reutilizadas quando todas as transações nessa seção forem concluídas. Uma única transação longa (mesmo que não esteja fazendo nada) pode impedir que o log seja reutilizado.

    
por 03.05.2011 / 13:11