Description:
If you’ve got sleeping accounts or developers who forgot to log out, this script helps you clean house. It scans for idle sessions or specific logins and kills those lingering connections—useful for freeing up resources or resetting stuck states. Handy for DBAs managing shared dev environments.
---This Script will kill all connection not excluded - use filters for what you need
DECLARE @v_spid INT,
@loginame nvarchar(20),
@hostname sysname
DECLARE c_Users CURSOR
FAST_FORWARD FOR
SELECT SPID,loginame,hostname
FROM master..sysprocesses (NOLOCK)
WHERE spid>50 AND program_name IN ('Microsoft SQL Server','Microsoft SQL Server Management Studio - Query','Microsoft SQL Server Management Studio')
--AND status='sleeping' OR status ='waiting command'
AND loginame NOT IN ('add login')
AND DATEDIFF(mi,last_batch,GETDATE())>=0
AND spid<>@@spid
OPEN c_Users
FETCH NEXT FROM c_Users INTO @v_spid,@loginame,@hostname
WHILE (@@FETCH_STATUS=0)
BEGIN
PRINT 'KILLing SPID '+CONVERT(VARCHAR,@v_spid)+'...' + @loginame + @hostname
EXEC('KILL '+@v_spid)
FETCH NEXT FROM c_Users INTO @v_spid,@loginame,@hostname
END
CLOSE c_Users
DEALLOCATE c_Users
---Choose your criteria to see is logged in or by login
SELECT SPID,loginame,hostname
FROM master..sysprocesses (NOLOCK)
WHERE spid>50 AND program_name IN ('Microsoft SQL Server','Microsoft SQL Server Management Studio - Query','Microsoft SQL Server Management Studio')
AND status='sleeping' OR status ='waiting command'
--AND loginame IN ('add logins')
--AND loginame ='add login'
AND DATEDIFF(mi,last_batch,GETDATE())>=0
AND spid<>@@spid
Discover more from SQLYARD
Subscribe to get the latest posts sent to your email.


