Pesquisar neste blog

terça-feira, 7 de abril de 2009

Matando conexões de uma base no MSQLServer

Hoje precisei matar algumas conexões ativas em uma base de dados específica então o fiz. Geralmente isto é um processo cansativo, abrir o abrir o enterprise manager e matar cada processo ativo, um por um. Quando você tem uma ou duas conexões ativas é tranquilo, agora quando você tiver 10 conexões pode ser um processo irritante e cansativo. Então para ajudar nesta tarefa árdua aqui vai o script que busca todas as conexões ativas de uma dada base de dados e mata cada conexão.

--Colocar a base de dados em modo single_user

alter
database dbName set single_user with rollback immediate

-- Agora vamos realizar a tarefa de matar as conexões
declare @execSql varchar(1000), @databaseName varchar(100)
-- Set the database name for which to kill the connections
set @databaseName = 'MinhaDatabase'

set @execSql = ''
select @execSql = @execSql + 'kill ' + convert(char(10), spid) + ' '
from master.dbo.sysprocesses
where db_name(dbid) = @databaseName
and
DBID <> 0
and
spid <> @@spid
exec(@execSql)

--Agora vamos repor a base de dados para modo multi_user:

alter database dbName set multi_user with rollback immediate

Nenhum comentário: