2014/06/09

Eliminar todas las conexiones activas en una base de datos

Permite cerrar las conexiones abiertas de una base de datos en SQL Server, cuando quieres  alterar y/o eliminar una tabla o base de datos y no se puedes porque existen conexiones activas que lo impiden, solo debes de ejecutar el siguiente script.
 
CREATE PROCEDURE dbo.KillConexiones 
    @dbName SYSNAME
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @spid     INT,
            @cnt      INT,
            @sql      VARCHAR(255)
    
    SELECT @spid = MIN(spid),
           @cnt     = COUNT(*)
    FROM   MASTER..sysprocesses
    WHERE  dbid     = DB_ID(@dbname)
           AND spid != @@SPID
    
    PRINT 'Eliminando ' + RTRIM(@cnt) + ' procesos.'
    WHILE @spid IS NOT NULL
    BEGIN
        PRINT 'Eliminando Proceso ' + RTRIM(@spid)
        SET @sql = 'KILL ' + RTRIM(@spid)
        EXEC (@sql)
        SELECT @spid = MIN(spid),
               @cnt     = COUNT(*)
        FROM   MASTER..sysprocesses
        WHERE  dbid     = DB_ID(@dbname)
               AND spid != @@SPID
        
        PRINT RTRIM(@cnt) + ' Procesos por eliminar.'
    END
END
GO