Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como listar e eliminar processos do Windows utilizando o CLR (C#)

Visualizações: 1.983 views
Tempo de Leitura: 5 minutos

OlĂ¡ pessoal,
Bom dia!

Neste post, vou demonstrar como listar e eliminar processos que estĂ£o executando no servidor SQL Server utilizando o CLR (C#). Esses recursos podem ser especialmente Ăºteis para identificar rapidamente os processos de usuĂ¡rios que estĂ£o em execuĂ§Ă£o, quais processos estĂ£o utilizando mais memĂ³ria ou uso de CPU, por exemplo.

Durante o desenvolvimento de um script PowerShell, onde estava convertendo arquivos do Excel (XLSX) para PDF, os processos estavam “travando” aguardando alguma interaĂ§Ă£o na tela, que como eu estava executando via linha de comando lĂ¡ no servidor, nĂ£o tinha como terminar essa interaĂ§Ă£o. Diante disso, a cada teste, um novo processo ficava em execuĂ§Ă£o no servidor aguardando essa interaĂ§Ă£o.

Com isso, ficaram vĂ¡rios processos em execuĂ§Ă£o sem fazer nada. Por este motivo, optei por desenvolver uma Stored Procedure no CLR para eliminar esses processos do servidor. Caso vocĂª queira saber mais detalhes sobre o uso da biblioteca Process, veja mais acessando o meu post SQL Server – Como executar scripts PowerShell e Prompt-DOS (MS-DOS) utilizando CLR (C#).

Como listar processos no SQL Server utilizando a lib Process

Na Stored Procedure abaixo, eu utilizo a biblioteca Process e o mĂ©todo GetProcesses para retornar as informações dos processos em execuĂ§Ă£o no servidor em questĂ£o.

sql-server-how-to-list-and-kill-windows-process-with-clr-csharp

Como listar processos no SQL Server utilizando o binĂ¡rio tasklist

Desta vez, vou utilizar novamente a biblioteca Process para executar o binĂ¡rio tasklist, que Ă© nativo do Windows, e exportar as informações retornadas pelo prompt do MS-DOS para CSV e tratar os dados no C#.

sql-server-how-to-list-and-kill-windows-process-with-clr-csharp-2

Como eliminar processos no SQL Server utilizando a lib Process

Para eliminar um processo do servidor onde estou atualmente conectado, podemos utilizar a biblioteca Process e o mĂ©todo Kill(), informando o nĂºmero do processo para que ele seja finalizado no servidor onde a Stored Procedure estĂ¡ sendo executada.

sql-server-how-to-list-and-kill-windows-process-with-clr-csharp-3

Como eliminar processos remotamente no SQL Server utilizando o binĂ¡rio taskkill

Diferente da Stored Procedure acima, neste exemplo vou utilizar a biblioteca Process para executar o binĂ¡rio nativo do Windows, taskkill.exe, para eliminar um processo atravĂ©s do PID informado, remotamente, ou seja, em qualquer servidor.

sql-server-how-to-list-and-kill-windows-process-with-clr-csharp-4

Como vocĂªs podem observar, em algumas Stored Procedures eu utilizo a classe Retorno para a exibiĂ§Ă£o de mensagens de alerta e mensagens de erro no banco de dados pelo CLR. O cĂ³digo-fonte dessa classe estĂ¡ disponĂ­vel no meu post SQL Server – Como enviar avisos e mensagens de erro para o banco pelo CLR (C#).

Espero que tenham gostado do post e até logo!

sql server clr c# csharp windows processo process list view listar visualizar relatĂ³rio kill eliminar matar processo

sql server clr c# csharp windows processo process list view listar visualizar relatĂ³rio kill eliminar matar processo