코딩 이야기/MS SQL

MSSQL 테이블 락 확인 및 해제 방법

안개소리 2025. 3. 31. 16:23

테이블 락 확인 및 해제

테이블 락 확인

설명 : 현재 MSSQL 서버에서 발생한 테이블 락 정보를 조회합니다.

 

예제 :

    -- sp_lock 시스템 프로시저 사용
    EXEC sp_lock;

    -- sys.dm_tran_locks 시스템 뷰 사용
    SELECT
        resource_type,
        resource_database_id,
        resource_associated_entity_id,
        request_mode,
        request_status,
        request_session_id
    FROM sys.dm_tran_locks;

    -- 특정 테이블의 락 정보 조회
    SELECT
        resource_type,
        resource_database_id,
        resource_associated_entity_id,
        request_mode,
        request_status,
        request_session_id
    FROM sys.dm_tran_locks
    WHERE resource_associated_entity_id = OBJECT_ID('YourTableName');
  

테이블 락 해제

설명 : 특정 세션에서 발생한 테이블 락을 해제합니다.

         가능하면 KILL 문을 사용하는 대신, 락을 걸고 있는 트랜잭션을 정상적으로 종료하는 것이 좋습니다.

         주의: 락을 해제하면 데이터 무결성이 깨질 수 있으므로 신중하게 사용해야 합니다.

 

예제 :

    -- sp_who2 시스템 프로시저를 사용하여 락을 걸고 있는 세션 ID 확인
    -- BlkBy 컬럼에 값이 있는 경우, 해당 세션이 다른 세션에 의해 차단되었음을 의미하며, 
    -- 이는 락으로 인해 발생할 수 있습니다.
    -- 또는 status 컬럼에 'suspended' 상태는 락으로 인해 대기 중인 세션을 나타냅니다.
    EXEC sp_who2;

    -- KILL 문을 사용하여 특정 세션 종료 (세션 ID는 sp_who2 결과에서 확인)
    KILL session_id; -- 예: KILL 56;