Dicas para um DBA Iniciante – Derrubar sessões inativas do servidor de banco de dados
By Vitor Fava
Fala galera, tudo bem?
Recentemente passei por um cenário bem curioso em um dos clientes que presto suporte e quero compartilhar com vocês a solução que utilizei na resolução desse problema.
O cliente em questão possuia um grande número de conexões inativas abertas na instância de banco de dados SQL Server e que causavam problemas no processos executados pelo ERP devido ao limite de usuários simultâneos que podiam utilizar o sistema.
Para resolver essa situação utilizei um script que verifica todas as sessões em estado de sleeping por mais de 24 horas e executa o processo de kill em cada uma delas:
DECLARE @user INT
DECLARE CursorSessoes CURSOR FAST_FORWARD
FOR
SELECT
[SPID]
FROM
[master].dbo.sysprocesses (NOLOCK)
WHERE
--ignorar sessões de sistema
spid>50
AND
--somente sessões com o status de sleeping
[status]='sleeping'
AND
--sessões que estejam em sleeping por mais de 24 horas
DATEDIFF(HOUR,last_batch,GETDATE())>=24
AND
--ignorar a sessão atual
spid<>@@spid
OPEN CursorSessoes
FETCH NEXT FROM CursorSessoes INTO @user
WHILE (@@FETCH_STATUS=0)
BEGIN
PRINT 'Killing '+CONVERT(VARCHAR,@user)
EXEC('KILL '+@user)
FETCH NEXT FROM CursorSessoes INTO @user
END
CLOSE CursorSessoes
DEALLOCATE CursorSessoes
GO
Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs e em nosso grupo no TELEGRAM.
Grande abraço a todos.
Fonte: Vitor Fava