CREATE PROCEDURE [dbo].[USP_KillHostProcesses] @HOSTNAME varchar(100) AS SET NOCOUNT ON -- variable declaration and initial values DECLARE @chv_killprocessestring VARCHAR(8000) DECLARE @ins_initialprocesses SMALLINT DECLARE @ins_remainingprocesses SMALLINT SET @ins_initialprocesses = 0 SET @ins_remainingprocesses = 0 SET @chv_killprocessestring = '' -- Fetch number of processes to kill SELECT @ins_initialprocesses = COUNT(* ) FROM MASTER..SYSPROCESSES WHERE HOSTNAME = @HOSTNAME AND SPID <> @@spid select * FROM MASTER..SYSPROCESSES -- Check there are processes to kill IF @ins_initialprocesses > 0 BEGIN -- Build command string of processes to kill > SELECT @chv_killprocessestring = COALESCE(@chv_killprocessestring,',') + 'KILL ' + CONVERT(VARCHAR,SPID) + '; ' FROM MASTER..SYSPROCESSES WHERE HOSTNAME = @HOSTNAME -- Kill processes (run command created above) > EXEC( @chv_killprocessestring) -- Fetch number of processes remaining > SELECT @ins_remainingprocesses = COUNT(* ) FROM MASTER..SYSPROCESSES WHERE HOSTNAME = @HOSTNAME IF @ins_remainingprocesses = 0 BEGIN -- Report on processes killed if killed them all > PRINT LTRIM(RTRIM(UPPER(@HOSTNAME))) + ' - Killed ' + RTRIM(CONVERT(VARCHAR(10),@ins_initialprocesses)) + ' process(s)' END IF @ins_remainingprocesses <> 0 BEGIN -- Report on processes remaining if could not end them all > PRINT LTRIM(RTRIM(UPPER(@HOSTNAME))) + ' - Killed ' + RTRIM(CONVERT(VARCHAR(10),@ins_initialprocesses - @ins_remainingprocesses)) + ' process(s), ' + RTRIM(CONVERT(VARCHAR(10),@ins_remainingprocesses)) + ' processes remaining.' END END IF @ins_initialprocesses = 0 BEGIN -- Report there are no processes for that DB > PRINT @HOSTNAME + ' - No processes to kill' END GO
Tuesday, 29 May 2007
USP_KillHostProcesses
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment