locked
Transaction Log estorou em Simple Recovery Model RRS feed

  • Pergunta

  • Pessoal,

    Estou me deparando com uma situação muito esquisita.

    Tenho uma base em Simples Recovery Model, no SQL Server 2005, e o Transaction Log esta cheio, com quase 100% de utilização, e lotando meu HD de Logs.

    Como é possivel criar log, não desalocar, estando no modo Simple?


    Gustavo Dobkowski Longo - MCITP SA/MCTS 70-643/MCTS 70-620
    segunda-feira, 19 de abril de 2010 13:48

Respostas

  • Gustavo,

    Provavelmente a aplicação que está utilizando essa base de dados foi muito mal escrita ou o seu LOG e Espaço em disco está sub-estimado para tal Base de Dados.

    Dependendo do tamanho do LOG que a sua aplicação está criando, recomendo reclamar com o desenvolvedor, pois provavelmente o desenvolvedor abriu uma transação e está processando uma grande quandidade de dados sem dar COMMIT.

    Dessa forma, o SQL não entende que a transação terminou e não dá truncate no LOG. Aumentando de tamanho e enchendo o seu disco.

    Juliano HOrta

    quarta-feira, 21 de abril de 2010 00:04
  • Gustavo, o log eh reusando conforme transacao sao comitadas. Se alguma transacao eh deixada aberta, o log nao pode ser reusando a partir do ponto em que a transacao comecou. Essa informacao eh necessaria caso a transacao sejah abortada ou a maquina seja reiniciada. Use o comando abaixo pra descobrir pq o log nao estah sendo reusado:

    select name, log_reuse_wait_desc from sys.databases

    Provavelment o motivo vai ser: ACTIVE_TRANSACTION. Mais detalhes em: http://msdn.microsoft.com/en-us/library/ms345414.aspx


    Fabricio Voznika [MSFT], SQL Server Storage Engine Team
    quarta-feira, 21 de abril de 2010 05:14

Todas as Respostas

  • Gustavo,

    Provavelmente a aplicação que está utilizando essa base de dados foi muito mal escrita ou o seu LOG e Espaço em disco está sub-estimado para tal Base de Dados.

    Dependendo do tamanho do LOG que a sua aplicação está criando, recomendo reclamar com o desenvolvedor, pois provavelmente o desenvolvedor abriu uma transação e está processando uma grande quandidade de dados sem dar COMMIT.

    Dessa forma, o SQL não entende que a transação terminou e não dá truncate no LOG. Aumentando de tamanho e enchendo o seu disco.

    Juliano HOrta

    quarta-feira, 21 de abril de 2010 00:04
  • Gustavo, o log eh reusando conforme transacao sao comitadas. Se alguma transacao eh deixada aberta, o log nao pode ser reusando a partir do ponto em que a transacao comecou. Essa informacao eh necessaria caso a transacao sejah abortada ou a maquina seja reiniciada. Use o comando abaixo pra descobrir pq o log nao estah sendo reusado:

    select name, log_reuse_wait_desc from sys.databases

    Provavelment o motivo vai ser: ACTIVE_TRANSACTION. Mais detalhes em: http://msdn.microsoft.com/en-us/library/ms345414.aspx


    Fabricio Voznika [MSFT], SQL Server Storage Engine Team
    quarta-feira, 21 de abril de 2010 05:14
  • Bom dia Senhores,

    Agradeço pelas respostas.

    Antes de tudo devo esclarecer quais aplicações estão envolvidas neste processo:

      - temos um Forefront/MOM 2005 implantado na rede , atendendo mais ou menos 2000 máquinas. Esta implantação possui 2 bases que são: Onepoint e SystemCenterReporting

      - Existe uma Job padrão da implantação que faz archiving dos dados com um determinado parâmetro de periodo

      - O problema de aumento inesperado do transaction log acontece na execução desta Job, realizada durante a madrugada, aumentando o arquivo de Log da base SystemCenterReporting

      - O HD de log possui 40 GB, e se deixo o crescimento do arquivo de log para irrestrito ele atinge o limite do HD e ainda continua querendo crescer

      - A job em si acabará terminando inesperadamente visto que o Transaction Log fica cheio

     

    A respeito da utilização da view sys.databases, sim, realmente sempre aparece como ACTIVE_TRANSACTION, enquanto o transaction log cresce.

    Nossa equipe acabou chegando neste ponto do do COMMIT também (ou CHECKPOINT dentro do log), visto que parece ser a coisa mais lógica.

    Agora vem uma grande dúvida: é possivel adicionar um COMMIT ou CHECKPOINT dentro desta tarefa automatizada do MOM 2005 ?

     


    Gustavo Dobkowski Longo - MCITP SA/EA/MCTS 70-431/70-443
    quinta-feira, 22 de abril de 2010 13:01