테이블 락 확인 및 해제
테이블 락 확인
설명 : 현재 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;
'코딩 이야기 > MS SQL' 카테고리의 다른 글
MSSQL IF 및 CASE 문 사용법 (0) | 2025.03.31 |
---|---|
MSSQL 임시 테이블 사용법 (0) | 2025.03.31 |
MSSQL 커서 사용법 (0) | 2025.03.31 |
MSSQL 프로시저 사용법 (0) | 2025.03.31 |
MSSQL 사용자 정의 함수 (0) | 2025.03.31 |