MSSQL 2008/MSSQL 관리

정보확인 - 세션 정보 확인하기 및 세션 죽이기

본클라쓰 2010. 12. 28. 16:08

 

세션은 현재 SQL Server 인스턴스에 연결된 사용자의 프로세스를 나타낸다.

 

이런 세션은 현재 SQL Server에 접근된 사용자의 정보를 나타내는데 이러한 정보를 가지고 있는 테이블이 master.dbo.sysprocesse 이다.

 

위 테이블을 조회하면 현재 SQL Server 인스턴스에서 사용되고 있는 클라이언트 프로세스 또는 시스템 프로세스에 대한 정보를 확인할 수 있다.

 

SELECT * FROM master.dbo.sysprocesses;

 

 

또는 sys.dm_exec_sessions 테이블로 확인할 수 있다.

 

SELECT * FROM sys.dm_exec_sessions;

 

 

위 쿼리문의 결과는 현재 인스턴스에 사용되고 있는 클라이언트 프로세스 + 시스템 프로세스이다. 검색된 결과를 알아보기 쉽게 하기 위해 쿼리문을 조금 수정하면 다음과 같다.

 

SELECT
    hostname AS '호스트명',
    PROGRAM_NAME AS '프로그램명',
    HOSTPROCESS AS '프로세스명',
    loginame AS '로그인명',
    waittime AS '현재대기시간',
    cpu AS '누적CPU 사용시간',
    login_time AS '로그인 시간',
    last_batch AS '마지막 호출시간',
    status AS '상태',
    cmd AS '실행중인명령',
    open_tran AS '트랜잭션 수',
    nt_domain AS '도메인명',
    nt_username AS '유저명',
    net_address AS 'MAC 주소',
    spid AS '세션ID',
    kpid AS '쓰레드ID',
    dbid AS '디비ID',
    uid AS '유저ID',
    request_id AS '요청ID',
    lastwaittype AS '대기유형'
FROM master.dbo.sysprocesses
WHERE status NOT LIKE 'background                    ';

 

 

위 쿼리문의 결과는 아래와 같다.

 

 

이 때 활성화된 세션 중에 필요없는 세션을 종료할 때는 'kill' 명령어를 사용한다.

 

exec sp_who2

 

명령어를 실행하여 SPID 값을 확인한 후

 

kill [SPID]

 

를 입력하여 필요없는 세션을 종료할 수 있다. 예를 들어 52번 세션을 종료할 때는

 

kill 52

 

와 같이 입력한다.