This script is able to kill the active connections to a database in case you need an exclusive lock for example.
As always, do remember to back up your database(s) before running strange new scripts. I've not had any illeffects from using it, as it simply only closes the connections, and modifies nothing else, but hey - "real men don't backup, they just cry alot". So backup is a good idea before doing anything new.
Anyways - the script.
USE master
SET NOCOUNT ON;
DECLARE @SPIDToKill INT
DECLARE @KillQuery VARCHAR(400)
DECLARE @DBName VARCHAR(200)
SET @DBName = 'DATABASE NAME HERE'
--First check if it is needed to run.
IF EXISTS(
SELECT T1.SPID
FROM SYSPROCESSES T1
INNER JOIN SYSDATABASES T2 ON T1.DBID=T2.DBID
WHERE T2.NAME=@DBName
) BEGIN
PRINT('Active Connections')
--Create table for the session id's
DECLARE @SPIDTable TABLE (SPID INT)
--insert into the table
INSERT INTO @SPIDTable
SELECT T1.SPID
FROM SYSPROCESSES T1
INNER JOIN SYSDATABASES T2 ON T1.DBID=T2.DBID
WHERE T2.NAME=@DBName
--Declare a cursor to run through the SPIDTable entities
DECLARE SPID_CURSOR CURSOR FOR
SELECT * FROM @SPIDTable
OPEN SPID_CURSOR
FETCH NEXT FROM SPID_CURSOR INTO @SPIDToKill
--while we can fetch IDs from SPIDTable
WHILE(@@FETCH_STATUS =0) BEGIN
PRINT('Attempting to kill SPID: ' + CONVERT(VARCHAR,@SPIDToKill))
--Build the kill query
SET @KillQuery = 'KILL '+ LTRIM(STR(@SPIDToKill))
--exec it.
EXEC (@KillQuery)
FETCH NEXT FROM SPID_CURSOR INTO @SPIDToKill
END
--clean up
CLOSE SPID_CURSOR
DEALLOCATE SPID_CURSOR
END ELSE BEGIN
PRINT('No active connections')
END