none
tempdb RRS feed

  • Pergunta

  • Olá Pessoal,

    Há uma precisei reiniciar a instância do SQL Server com o propósito de diminuir o tamanho do banco de dados tempdb, porém o mesmo já cresce continuamente, existe uma forma de limitar o tamanho dele sem que haja problemas ou algo do tipo?


    Obrigado.

    segunda-feira, 2 de janeiro de 2012 13:53

Respostas

  • Boa tarde JustSQL,

    da uma olhada nesse link, acredito que resolve seu "problema".

    http://social.technet.microsoft.com/forums/pt-BR/sqlserver2005pt/thread/ef1a0e4a-5014-48ef-afd0-308993661b26


    se ajudar, favor marcar como resposta. ;-)
    • Editado Andre_Bel segunda-feira, 2 de janeiro de 2012 16:32
    • Marcado como Resposta Richard Juhasz quarta-feira, 4 de janeiro de 2012 17:38
    segunda-feira, 2 de janeiro de 2012 16:31
  • Você pode aplicar a solução sugerida pelo André, mas deve trabalhar na causa do problema o mais breve possível. Limitar o tamanho do tempdb pode ser uma solução rápida para evitar a alocação de espaço em disco, mas quando o tamanho limite for alcançado, não só a transação que causou o problema será abortada. Podem haver outras transações importantes executando naquele momento e que também precisam utilizar a área temporária.

    Monitore transações de longa duração. A forma mais simples de se fazer isso é criando um Alerta do tipo "Performance Condition Alert" no SQL Server Agent, para monitorar o contador "Longest Transaction Running Time" do objeto "SQLServer:Transactions". O tempo é dado em segundos. Monitore inicialmente qualquer transação cujo tempo de duração seja maior que 300 segundos. Configure o Alerta para lhe enviar uma notificação. Execute DBCC OPENTRAN no seu banco de dados e observe as informações sobre a transação em execução.

    O mesmo alerta pode ser utilizado para executar um Job, que por sua vez poderá executar muitas outras operações, como logar em um arquivo ou uma tabela informações interessantes sobre as sessões que possuem transações em aberto, data e hora do último comando executado, qual foi o último comando executado, quantas transações estão em aberto naquela sessão, etc...

    Observe também se o arquivo templog.ldf está crescendo indefinidamente. Geralmente isto está relacionado com transações que criam enormes tabelas temporárias e então executam UPDATE nos registros nestas tabelas (muito comum em stored procedures complexas e geralmente mau escritas) e operações utilizando OPENQUERY.


    Senior Microsoft SQL Server Database Administrator
    Java JEE Software Developer
    • Marcado como Resposta Richard Juhasz quarta-feira, 4 de janeiro de 2012 17:38
    segunda-feira, 2 de janeiro de 2012 23:47

Todas as Respostas

  • Boa tarde JustSQL,

    da uma olhada nesse link, acredito que resolve seu "problema".

    http://social.technet.microsoft.com/forums/pt-BR/sqlserver2005pt/thread/ef1a0e4a-5014-48ef-afd0-308993661b26


    se ajudar, favor marcar como resposta. ;-)
    • Editado Andre_Bel segunda-feira, 2 de janeiro de 2012 16:32
    • Marcado como Resposta Richard Juhasz quarta-feira, 4 de janeiro de 2012 17:38
    segunda-feira, 2 de janeiro de 2012 16:31
  • Você pode aplicar a solução sugerida pelo André, mas deve trabalhar na causa do problema o mais breve possível. Limitar o tamanho do tempdb pode ser uma solução rápida para evitar a alocação de espaço em disco, mas quando o tamanho limite for alcançado, não só a transação que causou o problema será abortada. Podem haver outras transações importantes executando naquele momento e que também precisam utilizar a área temporária.

    Monitore transações de longa duração. A forma mais simples de se fazer isso é criando um Alerta do tipo "Performance Condition Alert" no SQL Server Agent, para monitorar o contador "Longest Transaction Running Time" do objeto "SQLServer:Transactions". O tempo é dado em segundos. Monitore inicialmente qualquer transação cujo tempo de duração seja maior que 300 segundos. Configure o Alerta para lhe enviar uma notificação. Execute DBCC OPENTRAN no seu banco de dados e observe as informações sobre a transação em execução.

    O mesmo alerta pode ser utilizado para executar um Job, que por sua vez poderá executar muitas outras operações, como logar em um arquivo ou uma tabela informações interessantes sobre as sessões que possuem transações em aberto, data e hora do último comando executado, qual foi o último comando executado, quantas transações estão em aberto naquela sessão, etc...

    Observe também se o arquivo templog.ldf está crescendo indefinidamente. Geralmente isto está relacionado com transações que criam enormes tabelas temporárias e então executam UPDATE nos registros nestas tabelas (muito comum em stored procedures complexas e geralmente mau escritas) e operações utilizando OPENQUERY.


    Senior Microsoft SQL Server Database Administrator
    Java JEE Software Developer
    • Marcado como Resposta Richard Juhasz quarta-feira, 4 de janeiro de 2012 17:38
    segunda-feira, 2 de janeiro de 2012 23:47