테스트 중 생성한 유저와 데이터베이스를 삭제할 때 사용하는 쿼리.


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]

 




Posted by motolies
,