forked from vitortff/DBAToolKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKill_Users.sql
47 lines (40 loc) · 1.2 KB
/
Kill_Users.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--Este script permite que sejam derrubadas todas as conexões existentes em um
----Database específico
SET NOCOUNT ON
DECLARE @spidstr varchar(max)
DECLARE @ConnKilled smallint
DECLARE @DBName AS VARCHAR(max)
DECLARE @withmsg AS BIT
DECLARE @loginame AS VARCHAR(max)
--Varíavel que recebe o nome do database que será analisado
SET @DBName = 'abacos'
SET @ConnKilled=0
SET @spidstr = ''
SET @withmsg = 1
SET @loginame = 'WS$BRASPAG'
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
--Utilizando a compatibility view sysprocesses, verificamos quais usuários
--estão conectados no database especificado e então montamos dinamicamente
--o comando Kill
SELECT
@spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar(100), spid)+ '; '
FROM
master..sysprocesses
WHERE
dbid=db_id(@DBName) AND loginame = @loginame
IF LEN(@spidstr) > 0
BEGIN
--Execução dos comandos Kill gerados
SELECT
@ConnKilled = COUNT(1)
FROM
master..sysprocesses WHERE dbid=db_id(@DBName) AND loginame = @loginame
EXEC(@spidstr)
END
IF @withmsg =1
PRINT CONVERT(VARCHAR(10), @ConnKilled) + ' Connection(s) killed for DB ' + @DBName
GO