테스트 중 생성한 유저와 데이터베이스를 삭제할 때 사용하는 쿼리.
use [dbname]
-- 현재 접속한 사용자 접속 끊기(where 절에 조건 확인)
declare @kill_stmt nvarchar(10), @cntr int
declare @kill_tbl table
(ident int identity(1,1),
spid int,
loginame nvarchar(128),
dbid int,
dbname nvarchar(256)
)
insert into @kill_tbl(spid, loginame, dbid, dbname)
Select sp.spid, sp.loginame, sb.dbid, sb.name as dbname
from master..sysprocesses sp
inner join master..sysdatabases sb on sp.dbid = sb.dbid
where 1 =1 and
--sb.name = '[dbname]' and
--loginame = '[userid]' and
loginame <> 'sa'
set @cntr = 1
while @cntr <= (select max(ident) from @kill_tbl)
begin
Select @kill_stmt = 'KILL ' + convert(varchar, spid) from @kill_tbl where ident = @cntr
exec (@kill_stmt)
select @cntr = @cntr + 1
end
-- 사용자 삭제(해당 db에서 사용)
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'[userid]')
drop user [userid]
-- 사용자 로그인 삭제
IF EXISTS (SELECT * FROM sys.syslogins WHERE name = N'[userid]')
DROP LOGIN [userid]
-- 데이터베이스 삭제
use master
drop database [dbname]