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.
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