Kill all database connections
June 7th, 2009
No comments
Just came across this script – very useful
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | -------------------------------------------------------------------------------------- /*** CREATED BY AJITH DHARWAR ***/ /*** This procedure will accept a DB name and drop all connections to the DB. ***/ -------------------------------------------------------------------------------------- CREATE PROCEDURE usp_killDBConnections @DBName VARCHAR(50), @withmsg BIT = 1 AS SET NOCOUNT ON DECLARE @spidstr VARCHAR(8000) DECLARE @ConnKilled SMALLINT SET @ConnKilled = 0 SET @spidstr = '' IF DB_ID(@DBName) > 4 BEGIN PRINT 'Connections to system databases cannot be killed' RETURN END SELECT @spidstr = COALESCE(@spidstr, ',') + 'kill ' + CONVERT(VARCHAR, spid) + '; ' FROM master..sysprocesses WHERE dbid = DB_ID(@DBName) IF LEN(@spidstr) > 0 BEGIN EXEC ( @spidstr ) SELECT @ConnKilled = COUNT(1) FROM master..sysprocesses WHERE dbid = DB_ID(@DBName) END IF @withmsg = 1 PRINT CONVERT(VARCHAR(10), @ConnKilled) + ' Connection(s) killed for DB ' + @DBName GO |
You can then use it like this
1 | EXEC sp_msforeachdb 'EXEC usp_killDBConnections @DBName=''?''' |
Or like this
1 | EXEC usp_killDBConnections @DBName='MyDatabase' |