usp_KillConnections

,

Drop all connections from a specific database.

/*****************************************************************
*** Procedure: usp_KillConnections 

*** Usage: usp_KillConnections @dbname = 'Database Name'

*** Description: Drop all connections from a specific database

*** Input: @dbname - REQUIRED - Name of the database
*** Output: Outputs the results of the proccess

*** Revision: 1.0 
*** Revision History: 1.0 First Release
*** Author: Antonio Pedrosa Linares
*** Date: 7/25/2007
******************************************************************/
create procedure usp_KillConnections
@dbname varchar(128)
as
declare @spid varchar(5)
declare @loginname nvarchar(128)
declare @intErrorCode int
declare @intOk int
declare @intError int
declare @intTotal int

set @intErrorCode = 0
set @intOk = 0
set @intError = 0
set @intTotal = 0

select @intTotal = count(sp.spid) FROM master..sysprocesses sp
JOIN master..sysdatabases sd ON sp.dbid = sd.dbid
WHERE sd.name = @dbname

declare KILL_CONS cursor for
SELECT cast(sp.spid as varchar(5)),rtrim(sp.loginame)
FROM master..sysprocesses sp
JOIN master..sysdatabases sd ON sp.dbid = sd.dbid
WHERE sd.name = @dbname

OPEN KILL_CONS

FETCH NEXT FROM KILL_CONS INTO @spid,@loginname
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('Kill '+ @spid + '')
SELECT @intErrorCode = @@ERROR
if @intErrorCode = 0
begin
set @intOk = @intOk + 1
PRINT 'Process ' + @spid + ' from login ' + @loginname + ' has been ended.'
end
else
begin
set @intError = @intError + 1
PRINT 'Process ' + @spid + ' from login ' + @loginname + ' could not be ended.'
end
FETCH NEXT FROM KILL_CONS INTO @spid,@loginname
END
CLOSE KILL_CONS
DEALLOCATE KILL_CONS
PRINT 'Total number of processes from database ' + @dbname + ': ' + cast(@intTotal as varchar)
PRINT 'Processes ended normally: ' + cast(@intOk as varchar)
PRINT 'Processes could not be ended: ' + cast(@intError as varchar)
GO

Rate

4.3 (10)

Share

Share

Rate

4.3 (10)