본문 바로가기

[DataBase]/MSSQL

[MSSQL] 현재 락 걸린 쿼리 확인 & 죽이기

반응형

문제 없이 쿼리를 작성하는게 베스트겠지만 예상치 못하는 문제로 인해 LOCK이 걸려 작업이 불가능한 경우가 있다.
이럴경우 문제가 되는 쿼리가 실행중인 프로세스를 죽여주는 방법이 필요하다.

현재 실행중인 쿼리 확인

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 

현재 락 걸린 쿼리 확인

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 ='내 db 명'
ORDER BY name

쿼리 죽이기

EXEC KILL [spid]
반응형