사용자 도구

사이트 도구


sqlserver:kill_session

Kill the Session

현재 실행중인 쿼리

현재 수행중인 쿼리를 찾아서 어떠한 쿼리가 날아가고 있는지만 확인해도 DBA라면 대충은 무거운 쿼리인지 얼마나 걸릴 쿼리인지, 죽여야할 쿼리인지 정도는 예측할 수 있다, 따라서 현재 실행중인 쿼리를 찾아 먼저 어떤 쿼리인지 확인 하는 것이 중요하다.

SELECT 
   sqltext.TEXT,
   req.session_id,
   req.status,
   req.command,
   req.cpu_time,
   req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 

LOCK 쿼리 찾기

어떠한 이유에서든 LOCK가 걸린 쿼리를 찾는 쿼리이다. 아무래도 다른 트랜잭션에 의해 참조되고 있어서 LOCK이 걸렸을 경우가 높다. 이런 경우에는 원인을 빠르게 찾아 KILL을 시킬 것인지 안시킬 것인지 파악하는 것이 중요하다.

SELECT DISTINCT
        name AS database_name,
        session_id,
        host_name,
        login_time,
        login_name,
        reads,
        writes        
FROM    sys.dm_exec_sessions
        LEFT OUTER JOIN sys.dm_tran_locks ON sys.dm_exec_sessions.session_id = sys.dm_tran_locks.request_session_id
        INNER JOIN sys.databases ON sys.dm_tran_locks.resource_database_id = sys.databases.database_id
WHERE   resource_type <> 'DATABASE'
AND request_mode LIKE '%X%'
AND name ='dwehrdev'
ORDER BY name

KILL

KILL sid

현재 ACTIVE 한 쿼리 찾는 쿼리

SELECT DISTINCT
        name AS database_name,
        session_id, resource_type,
        host_name,
        login_time,
        login_name,
        reads,
        writes
FROM    sys.dm_exec_sessions
        LEFT JOIN sys.dm_tran_locks ON sys.dm_exec_sessions.session_id = sys.dm_tran_locks.request_session_id
        JOIN sys.databases ON sys.dm_tran_locks.resource_database_id = sys.databases.database_id
WHERE resource_type <> 'DATABASE'
AND name ='DWEHRDEV'
ORDER BY name
sqlserver/kill_session.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1