Temos uma transação que está em execução há mais de 5 horas. Estamos ficando sem espaço em disco. A sessão foi encerrada, mas ainda está aguardando IO_COMPLETION. Na verdade, o wait_type acabou de mudar para PAGEIOLATCH_EX. Como posso encerrar a transação suspensa do SQL Server? Não estou preocupado em perder dados, pois todos podem ser repovoados.
session_id: 54
STATUS: suspended
blocked by: 0
wait_type: PAGEIOLATCH_EX
Elapsed Time (in Sec): 19750.420000
open_transaction_count: 2
Da próxima vez que isso acontecer, execute
sp_WhoIsActive
( download / documentação ) e veja quem está executando o quê e examine a lógica. Verifique se o TSQL pode ser otimizado para executar mais rapidamente ou talvez dividi-lo em transações menores.Já tive casos em que o log de transações de uma consulta inválida por escritores de relatórios, carregadores de dados, etc. aumentaria o log de transações para mais do que o tamanho do arquivo de dados, e geralmente é uma consulta de baixo desempenho e mal escrita que não é otimizada ou dividida em transações menores para devolver o espaço livre assim que a transação for concluída - isso também estava em um
SIMPLE
banco de dados de modelo de recuperação -FULL
bancos de dados de modelo de recuperação precisariam ter backups de log de transações concluídos para permitir a reutilização do espaço de log de transações de transações confirmadas.A raiz do problema é provavelmente a consulta, portanto, determinar quem está fazendo o quê e entrar em contato com eles e relatar o problema com suas descobertas os pressionaria a corrigir sua lógica para não aumentar o espaço em disco do servidor para essa partição de disco - espero que seja não é sua lógica, mas se for, procure otimizar a lógica para ajustar a consulta para desempenho.