quarta-feira, 25 de julho de 2012

Script para finalizar processos de usuário provenientes de uma máquina específica em um banco específico

Oi pessoal, tudo bem? Primeiro post e uma dica resultante de um problema no trabalho hoje. Pintou um problema em que uma stored procedure fez um lock inadequado em uma tabela e enfileirou uma série de SELECTs e INSERTs feitos por agentes.

Como esse enfileiramento acabou se tornando muito grande, tendo grande impacto no desempenho de outras aplicações, perguntei ao colega se haveria problema em finalizar estes processos enfileirados e ele disse que não. Pois bem, a única coisa que identificava estes SELECTs e INSERTs eram os servidores a partir dos quais as solicitações eram feitas. Então fiz rapidinho um script para finalizar todos os processos oriundos destes servidores em um banco de dados específico:


declare @output varchar(max);
set @output = ''

select @output = @output + 'kill ' + cast(spid as varchar(max)) + ';' from sys.sysprocesses
where DB_NAME(dbid) = '[NOME DO BANCO]'
and hostname in ('[SERVIDOR1]','[SERVIDOR2]','[SERVIDOR3]')

exec(@output)


Resolveu o problema rapidinho. Caso tenham dúvidas, mandem para cá que tentarei respondê-las. Abraços!

Nenhum comentário:

Postar um comentário