http://wiki.lessthandot.com/index.php/Kill_All_Active_Connections_To_A_Database
To kill all the connections to your database you can use the ALTER DATABASE command. Sometimes you want to restore the database from a backup but can't because people are connected. Here is one way which will kick off all the users immediately
- ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
- --do you stuff here
- ALTER DATABASE YourDatabase SET MULTI_USER
The code below will wait 60 seconds
- ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK AFTER 60 SECONDS
- --do you stuff here
- ALTER DATABASE YourDatabase SET MULTI_USER
The reason this is better than looping over sysprocesses or sys.dm_exec_sessions is that nobody will connect while that looping piece of code runs