코딩 이야기/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;