¿Cómo se eliminan todas las conexiones actuales a una base de datos SQL Server 2005
Quiero renombrar una base de datos,pero sigue apareciendo el error de que "no se pudo conseguir el bloqueo exclusivo" en la base de datos,lo que implica que hay alguna conexión(es)todavía activa(s).
¿Cómo puedo eliminar todas las conexiones a la base de datos para poder renombrarla?

Answer 1 SQLMenace
La razón por la que el enfoque que sugirió Adam no funcionará es que durante el tiempo que está pasando por las conexiones activas se puede establecer una nueva, y las perderá. En su lugar, podría utilizar el siguiente enfoque que no tiene este inconveniente:
-- 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
Answer 2 Adam
Guión para lograr esto,reemplazar 'DB_NAME' con la base de datos para matar todas las conexiones a:
USE master
GO
SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''
Set @DBName = 'DB_NAME'
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
Answer 3 btk
Mátalo,y mátalo con fuego:
USE master
go
DECLARE @dbname sysname
SET @dbname = 'yourdbname'
DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE ('KILL ' + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
Answer 4 Joseph Daigle
Usando el SQL Management Studio Express:
En el árbol del Explorador de Objetos profundiza en la Gestión hasta "Monitor de Actividad" (si no lo encuentras allí,haz clic con el botón derecho del ratón en el servidor de la base de datos y selecciona "Monitor de Actividad").Abriendo el Monitor de Actividad,puedes ver toda la información del proceso.Deberías poder encontrar los bloqueos de la base de datos que te interesan y eliminarlos,lo que también eliminará la conexión.
Deberías poder cambiar el nombre después de eso.
Answer 5 brendan
Siempre he usado:
ALTER DATABASE DB_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
SP_RENAMEDB 'DB_NAME','DB_NAME_NEW'
Go
ALTER DATABASE DB_NAME_NEW SET MULTI_USER -- set back to multi user
GO