Não é um script original, mas sim ajustado, que pode chegar onde você precisa estar ou pelo menos começar:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[uspKillUsersFETCH] @dbname varchar(50)
as
DECLARE @strSQL varchar(255)
PRINT 'Killing Users '
PRINT '-------------------------------------------------------------------------------------------'
CREATE table #tmpUsers(
spid int,
dbname varchar(128),
cmd varchar(128))
INSERT INTO #tmpUsers
select spid, convert(varchar(128),db_name(dbid)), cmd
from master.dbo.sysprocesses (nolock)
DECLARE LoginCursor CURSOR
READ_ONLY
FOR SELECT spid, program_name FROM #tmpUsers WHERE dbname = 'database name here'
and spid > 50
and cmd like '%FETCH API_CURSORXXX%'
DECLARE @spid int
DECLARE @dbname2 varchar(128)
OPEN LoginCursor
FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT 'Killing ' + convert(varchar(10),@spid)
SET @strSQL = 'KILL ' + convert(varchar(10),@spid)
EXEC (@strSQL)
END
FETCH NEXT FROM LoginCursor INTO @spid, @dbname2
END
CLOSE LoginCursor
DEALLOCATE LoginCursor
DROP table #tmpUsers
**** Mais uma vez, não é original, então deve ser dado crédito a esse roteirista agora desconhecido ****
Eu uso uma versão dele para eliminar spids do SQL 2005 que se conectam a um banco de dados de reserva enviado por log usando o Mgt Studion