1222: Lock request time out period exceeded
SQL Server의미
쿼리가 락 획득을 기다리는 동안 타임아웃이 만료되었다. 다른 트랜잭션이 필요한 리소스를 너무 오래 잠그고 있어 요청이 취소되었다.
원인
SET LOCK_TIMEOUT으로 설정한 대기 시간 초과, 장시간 실행되는 블로킹 트랜잭션, 커밋되지 않은 열린 트랜잭션, 긴 스캔과 락 충돌.
해결 방법
블로커를 찾는다: sys.dm_exec_requests, sys.dm_tran_locks와 blocking_session_id 컬럼을 확인하거나 sp_who2 / sp_whoisactive를 사용한다. 긴 트랜잭션을 짧게 하고 커밋한다. 필요하면 LOCK_TIMEOUT을 조정한다. 읽기 위주 시스템에서는 RCSI/snapshot isolation으로 읽기-쓰기 충돌을 줄인다.
같은 데이터베이스의 다른 항목
- 18456Login failed for user
- 8152String or binary data would be truncated
- 2628String or binary data would be truncated in table, column ...; truncated value
- 9002The transaction log for database is full due to ...
- 1105Could not allocate space for object in database because the filegroup is full
- 208Invalid object name
- 229The SELECT/EXECUTE permission was denied on the object