ptheriault
IS-IT--Management
I'm working on writting a script to kill spids over 1 hour old that are in a sleeping status. The problem is the LastBatch column from sp_who2 is a varchar datatype. How can I convert this without losing the time? Here is my script so far.
- Paul
- If at first you don't succeed, find out if the loser gets anything.
Code:
DECLARE @strSQL varchar(255)
PRINT 'Killing Users'
PRINT '-----------------'
DECLARE @tmpUsers TABLE(
spid int,
STATUS varchar(50),
loginname varchar(50),
hostname varchar(50),
blk varchar(10),
dbname varchar(50),
cmd varchar(30),
CPUTIME varchar(255),
DISKIO varchar(255),
LASTBATCH Varchar(30),
ProgramName Varchar(255),
SPID2 int,
requestid int)
INSERT INTO @tmpUsers EXEC SP_WHO2
SELECT spid, dbname,LastBatch
FROM @tmpUsers
WHERE dbname = '1stComp'
AND STATUS = 'sleeping'
DECLARE LoginCursor CURSOR
READ_ONLY
FOR SELECT spid, dbname FROM @tmpUsers
WHERE dbname = '1stComp'
AND STATUS = 'sleeping'
--AND LastBatch
DECLARE @spid varchar(10)
DECLARE @dbname2 varchar(40)
OPEN LoginCursor
FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT 'Killing ' + @spid
SET @strSQL = 'KILL ' + @spid
EXEC (@strSQL)
END
FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
END
CLOSE LoginCursor
DEALLOCATE LoginCursor
GO
- Paul
- If at first you don't succeed, find out if the loser gets anything.