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