Kill Sleeping Sessions or Stuck Developer Logins in SQL Server

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.

Leave a Reply

Discover more from SQLYARD

Subscribe now to keep reading and get access to the full archive.

Continue reading