DBAtlas · 데이터베이스 운영 아틀라스

5061: ALTER DATABASE failed because a lock could not be placed on database (데이터베이스에 락을 걸 수 없어 ALTER DATABASE 실패)

SQL Server

의미

ALTER DATABASE 작업(예: single-user 모드 전환, 파일 변경, 옵션 설정)이 다른 활성 연결/세션이 데이터베이스를 사용하고 있어 필요한 락을 획득할 수 없었다.

원인

데이터베이스가 사용 중일 때 작업을 시도해, 활성 사용자 연결 때문에 SET SINGLE_USER, RESTRICTED_USER 또는 유사한 옵션 변경에 필요한 배타적 락을 획득할 수 없었다. 애플리케이션 연결이 열려 있는 상태에서 잦은 배포/유지보수를 할 때 흔하다.

해결 방법

데이터베이스에 연결된 다른 세션을 식별하고(sys.dm_exec_sessions, sp_who2) 안전하게 닫는다. 유지보수 시에는 ROLLBACK 옵션으로 열린 트랜잭션을 롤백하면서 모드를 변경한다: ALTER DATABASE [db] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 애플리케이션 트래픽이 적을 때나 유지보수 시간에 작업을 수행한다. 완료 후 MULTI_USER로 되돌리는 것을 잊지 않는다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목