Nosso aplicativo parou de funcionar repentinamente devido a The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'.
. Agora, ele começa a funcionar novamente. Mas como posso saber o motivo exato para esse erro ter surgido?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Você pode usar essa consulta para obter uma lista das consultas em execução ativa em todo o servidor, incluindo o ID do processo, há quanto tempo estão em execução, em qual banco de dados estão sendo executados, quem as executou, informações de estatísticas de espera, IDs de consulta de bloqueio , etc. Eu recomendo colocá-lo dentro de um procedimento armazenado para que você possa chamá-lo facilmente conforme necessário (mesmo com seus parâmetros padrão) e você pode agendá-lo rotineiramente com um trabalho do SQL Agent para registrar os resultados em uma tabela.
Usando isso, você pode ver as consultas de execução mais longa (as colunas
Duration
ouRunningTime
) e também ver por que elas estão em execução por tanto tempo observando as colunasLastWaitType
e/ou .BlockingSessionId
Este é um trabalho em andamento que criei a partir do sp_WhoIsActive de Adam Machanic que uso regularmente para depurar problemas no SQL Server.
Você provavelmente tem uma transação ativa em tempdb. Você pode ver a contagem de transações ativas.
Você também pode verificar o conteúdo de tempdb para encontrá-lo.
O que eu faria seria verificar quais consultas/trabalhos estão sendo executados quando você está recebendo esse erro para encontrar exatamente o que está travando.