Como derrubar usuário que ficou preso no banco de dados?


Este procedimento tem o intuito de mostrar em como derrubar um usuário Protheus que fica preso dentro do banco de dados e que não conseguimos derrubar via DBMONITOR do Protheus. Para isso precisamos identificar qual é  SPID do usuário preso. 1º Abrir o DBMONITOR do Protheus e localizar a coluna “DB Thread”, pois nela fica o código do SPID e o código de bloqueio. O SPID é o primeiro código e o outro é o correspondente ao código de bloqueio. Algumas vezes mesmo clicando no botão "Encerrar" do DbMonitor, não conseguimos derrubar a conexão do usuário. E quando não conseguimos derrubar, vamos diretamente ao banco de dados e fazer o seguinte SELECT apenas para certificar quem está preso, pois poderá haver outros presos também. Exemplo:

SELECT * FROM master..sysprocesses where dbid=db_id('NOME DO BANCO') and blocked > 0
O SPID do usuário ficará armazenado no campo blocked. Para matar o processo, digite KILL “CODIGO SPID” sem as aspas No exemplo da imagem acima faça:
KILL 221 --SPID encontrado no dbmonitor
--ou
KILL 294 --SPID encontrado no select