Trabalho com o SQL Server há algum tempo e entendo os vários problemas que podem ocorrer com o TempDB. Mas, com este último problema, se eu tiver meu problema resolvido corretamente, é possível que uma instrução com um BEGIN TRANSACTION que usa tabelas/objetos tempdb que fica pendente (sem confirmação) possa manter o arquivo LOG tempdb "aberto" e não permitir que o tempdb limpe seu próprio log? Isso faz com que o arquivo de log tempdb seja preenchido e causando problemas no SQL Server. Acho difícil acreditar que não exista algum tipo de proteção no SQL Server que de alguma forma permita que o tempdb LOG não seja afetado Se não, acho isso perturbador…
TempDB não é diferente de qualquer outro banco de dados. Todas as ações devem ser registradas e o espaço de log só será reutilizado quando os registros de log de uma determinada transação forem confirmados ou revertidos.
Como @KrisGruttemeyer disse em um comentário, você pode descobrir que tipo de ação está causando o crescimento do log de transações observando:
Isso provavelmente mostrará 'transação ativa' ou 'nada' para tempdb. Se você vir
active transaction
, sabe que alguma transação está aberta e ainda não foi confirmada. Você pode ver quais transações estão abertas observando vários DMVs do sistema, incluindosys.dm_tran_active_transactions
, entre outros.Para uma visão muito mais detalhada do que está causando o crescimento do seu tempdb, confira esta pergunta .