Eu tenho uma instalação do SQL 2005 e meu arquivo templog.ldf continua crescendo para consumir todo o espaço livre na unidade em que está. Às vezes, ele pára com alguns mb livres, mas às vezes vai além, sendo esta a unidade c, acho que esse comportamento pode estar implicado em outros problemas que venho vendo.
Minha pergunta é: o que devo fazer, posso mover o log para outra unidade, mas tenho motivos para supor que ele não fará a mesma coisa lá. Estou assumindo que esse comportamento provavelmente é o resultado de algo que eu possa alterar e que 45 GB é um tamanho incomum para o log tempdb. Usamos muitas tabelas temporárias e funções com valor de tabela em nosso código, para que haja muito escopo para usar o tempdb, posso entender o crescimento do banco de dados tempdb, mas não entendo o motivo do crescimento do templog.
Até agora, executei o DBCC OPENTRAN ('tempdb') para ver se existem transações antigas por aí, elas não estão. Eu li sobre como reduzir o tempdb e fiz isso algumas vezes, mas estou realmente imaginando o que fazer para impedir que isso aconteça em primeiro lugar ou mais detalhes sobre por que ele pode estar crescendo tanto. o primeiro lugar.
== EDITS ==
1) O tempdb está usando o modelo de recuperação simples
2) O crescimento do templog ocorre algumas horas da manhã, quando temos algumas consultas agendadas em execução, basicamente uma carga de relatórios que ficam fora do horário comercial para o dia seguinte. O tamanho do arquivo aumenta constantemente nesse período. Controlamos quantos relatórios simultâneos estão sendo executados ao mesmo tempo. Aumentar o número de relatórios simultâneos aumenta a taxa na qual o log cresce.
Respostas:
Verifique suas consultas de relatórios. Você tem algum que tenha DISTINCT neles? Algum deles tem junções cartesianas?
Alguma das consultas de relatório acessa servidores vinculados como membros de uma associação? Nesse caso, isso pode causar o crescimento do log e banco de dados tempdb.
Quando os relatórios estão sendo publicados pela manhã, algum deles falha?
fonte
Tivemos um problema semelhante, depois de termos levantado a chamada do PSS com a Microsoft e uma investigação aprofundada do problema, zonamos para a seguinte causa e resolução possível.
Causa:
A causa provável dos sintomas deve-se a discos / lun nos quais os bancos de dados de usuários são colocados com problemas graves de resposta de E / S; isso faz com que o ponto de verificação automático nos bancos de dados do usuário demore muito para terminar.
Agora, o ponto de verificação no tempdb ocorre apenas quando o log do tempdb fica 70% cheio e também tem uma prioridade mais baixa que os pontos de verificação do banco de dados do usuário. Portanto, efetivamente quando o ponto de verificação automático nos bancos de dados do usuário é emitido e está tentando concluir, devido ao uso intenso do tempdb, o arquivo de log tempdb é preenchido rapidamente; com 70% de uso do log, o ponto de verificação tempdb ocorre, mas fica na fila atrás do ponto de verificação do banco de dados do usuário.
No tempo em que o ponto de verificação do banco de dados do usuário leva para concluir, o arquivo de log tempdb continua sendo preenchido e, se o crescimento automático estiver definido, o arquivo de log aumenta quando requer mais espaço. Esse é o motivo pelo qual o arquivo de log continua crescendo.
Em resumo, a causa raiz mais possível para os sintomas que você descreve deve-se à fraca resposta de E / S dos discos / lun para o usuário e / ou arquivos de banco de dados / log tempdb.
Solução:
Resolvemos o problema enquanto resolvíamos o subsistema de E / S configurando um alerta que disparava quando o arquivo de log tempdb fica 75% cheio e, em resposta, executamos um trabalho que forçou um "CHECKPOINT" manual (que tem precedência sobre o sistema automático pontos de verificação), limpando o log tempdb, impedindo que ele cresça automaticamente indefinidamente. Ainda é uma boa idéia deixar o arquivo de log no crescimento automático para qualquer outra eventualidade. Além disso, eu recomendo fortemente que você considere reduzir o tamanho do arquivo de log tempdb para algo significativo conforme o seu ambiente após a correção.
Espero que isto ajude.
fonte
Como o Modelo de Recuperação está definido no temp db? Se não estiver definido como Simples, defina-o como Simples. Isso deve impedir que ela cresça. Se já estiver definido como Simples, diria que há um problema subjacente que precisa ser resolvido e qualquer tentativa de reduzir o arquivo está apenas tratando os sintomas do problema e não a causa raiz.
fonte
Passei as últimas horas lendo e fazendo anotações sobre isso
http://technet.microsoft.com/en-gb/library/cc966545.aspx
Há muitos detalhes e sugestões para solucionar problemas. Parece que, a menos que o tempdb esteja em expansão e nunca pare de crescer, provavelmente está ocupando a quantidade de espaço necessária e deveria ter sido configurado para ter esse tamanho inicialmente. Há uma seção sobre a estimativa do espaço necessário para o seu tempdb, além de rastrear o que pode estar ocupando espaço no tempdb. Como resultado disso, a primeira coisa que vou fazer é mover o tempdb para uma unidade maior e ver o que acontece a partir daí.
Há uma seção intitulada 'Espaço necessário para o log tempdb' que indica quais recursos usam o log; há outra seção anterior que detalha o superconjunto de recursos que usam tempdb.
A seção intitulada 'Monitorando E / S' tem algumas idéias sobre os contadores de desempenho a serem observados; uma rápida olhada no meu servidor as coloca no território que você provavelmente tem um gargalo de io. Vou monitorá-los por um tempo e ver como as coisas se desenrolam. O arquivo de log tempdb também estava na verdade com menos de 50% de utilização, o que se encaixa na idéia de que ele foi expandido sob carga nesta manhã e manteve esse espaço desde então.
Vou adiante com base em que o tamanho para o qual cresceu é o tamanho que precisa ser, monitore esse tamanho no futuro e verifique se há espaço para crescimento em qualquer unidade em que esteja. Conforme sugerido por alguns aqui, examinarei o que está sendo executado à medida que o log temporário se expande e ver se algo pode ser ajustado lá. Também ficarei de olho nesses contadores de desempenho io para ver se algo precisa ser resolvido.
Havia mais uma seção interessante adicional intitulada 'Atualizando para o SQL Server 2005', que indica que o tempdb é usado para mais coisas em 2005 que 2000 (ambos os novos recursos e os existentes que anteriormente não usavam o tempdb). Eu atualizei apenas recentemente para 2005, e isso pode ser parte do motivo de isso se tornar um problema repentino. Não me lembro de ter visto isso em nenhum outro lugar com referência à atualização para 2005, o que é um pouco trabalhoso.
fonte
Provavelmente, isso é causado por uma consulta de junção cruzada fora de controle. Sua melhor aposta é usar o Profiler para encontrá-lo e corrigi-lo.
A outra maneira de encontrá-lo é restringir o tamanho do arquivo de log TempDB e aguardar para ver qual falha da consulta. No entanto, aposto que já está falhando e ninguém está lhe dizendo.
fonte
Se você reiniciar o mecanismo SQL, o arquivo será definido para o tamanho inicial. Você deve colocar um tamanho máximo em todos os seus arquivos de crescimento automático.
fonte
Algumas consultas SQL ou procedimentos armazenados estão fazendo coisas ruins - a única coisa que você pode fazer é criar um perfil do tempdb para capturar o evento "Banco de dados: crescimento automático do arquivo de log" e, quando isso acontecer, use o criador de perfil e consultas em tabelas como sysprocesses para encontrar descobrir qual é o mau processo.
Infelizmente, cabe ao trabalho de detetive antiquado rastrear o processo desonesto.
Você tentou redimensionar os arquivos de log tempdb com DBCC SHRINKFILE ()? Em caso afirmativo, quanto tempo leva para chegar de [valor muito pequeno] a 45 GB ou mais?
fonte