Powodem, dla którego podejście zasugerowane przez Adama nie zadziała, jest to, że w czasie, gdy zapętlasz aktywne połączenia, można nawiązać nowe, a je przegapisz. Zamiast tego możesz użyć następującego podejścia, które nie ma tej wady:
-- set your current connection to use master otherwise you might get an error
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER