Sidebar

Cuantas veces no hemos tenido que sacar a los usuarios de las bases de datos para actualizar una nueva versión , aunque hay métodos menos drásticos el Stored Procedure que les presento continuación me ha sacado de varios apuros .

Este procedimiento llamado sp_killmasivo recibe dos parámetros

Sp_killmasivo “12mxmx” ,”v” el primero es una cadena de texto que haga referencia al hostname del usuario o usuarios que queramos sacar de la base de datos , el segundo parámetro puede ser “v” que solo visualiza al usuario o usarios y el paramatero “k” que le da un kill a los usarios que lleven en su Hostname la cadena de texto que pusimos en el primer parámetro.

--- Marcelo Ramirez
--- Omar Saavedra


CREATE PROCEDURE SP_KILLMASIVO
@HOST CHAR(255),
@MODO CHAR(1) -- V para ver y K para matar
AS

DECLARE @SPID_KILL SMALLINT,
@HOSTNAME_KILL CHAR(255),
@VAR_LIKE CHAR(255),
@HOSTES CHAR(255),
@KILL_CMD CHAR(255)

SELECT @HOSTES = ''
SELECT @VAR_LIKE = '%' + RTRIM(LTRIM(@HOST)) + '%'

DECLARE KILL_MASIVO CURSOR FOR
SELECT SPID, HOSTNAME
FROM MASTER..SYSPROCESSES
WHERE HOSTNAME LIKE RTRIM(LTRIM(@VAR_LIKE))

OPEN KILL_MASIVO

FETCH KILL_MASIVO INTO @SPID_KILL, @HOSTNAME_KILL
WHILE @@SQLSTATUS = 0
BEGIN


SELECT @KILL_CMD = 'KILL ' + RTRIM(CONVERT(CHAR(255),@SPID_KILL))

IF @MODO = 'V' SELECT @SPID_KILL, @HOSTNAME_KILL
IF @MODO = 'K'
BEGIN
SELECT @SPID_KILL, "KILLED", @HOSTNAME_KILL
EXEC(@KILL_CMD)
END

FETCH KILL_MASIVO INTO @SPID_KILL, @HOSTNAME_KILL

END
CLOSE KILL_MASIVO
DEALLOCATE CURSOR KILL_MASIVO