40501: The service is currently busy. Retry the request after 10 seconds (서비스가 현재 바쁨. 10초 후 재시도)
SQL Server의미
Azure SQL Database에서 리소스 압박으로 서비스가 일시적으로 요청을 거부했다(engine throttling). 시스템이 바쁘며 클라이언트가 잠시 후 재시도할 것으로 예상된다.
원인
CPU, 연결, 트랜잭션 로그 쓰기 속도, worker 수 같은 리소스가 선택한 서비스 계층(DTU/vCore)의 한도에 도달했거나, 갑작스러운 부하 급증, 리소스를 소모하는 장시간/비효율적 쿼리가 원인이다. 오류와 함께 오는 'reason code'가 어떤 리소스가 throttling되는지 보여 준다.
해결 방법
애플리케이션에 지수 백오프 재시도 로직을 구현한다. 일시적 오류에 대한 예상된 동작이다. 리소스 사용량 검토: sys.dm_db_resource_stats 및 Azure 포털 메트릭. 쿼리/인덱스를 최적화하고 불필요한 동시성을 줄인다. 포화가 지속되면 서비스 계층(DTU/vCore)을 스케일 업한다.
같은 데이터베이스의 다른 항목
- 605Attempt to fetch logical page belongs to a different allocation unit (가져오려는 논리 페이지가 다른 allocation unit에 속함)
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column (하나 이상의 객체가 이 컬럼에 접근하므로 ALTER TABLE ALTER COLUMN 실패)
- 7202Could not find server 'name' in sys.servers (sys.servers에서 서버를 찾을 수 없음)
- 8645A time out occurred while waiting for memory resources to execute the query (쿼리 실행을 위한 메모리 리소스를 기다리는 중 타임아웃 발생)
- 8651Could not perform the operation because the requested memory grant was not available (요청한 memory grant를 사용할 수 없어 작업을 수행할 수 없음)
- 5061ALTER DATABASE failed because a lock could not be placed on database (데이터베이스에 락을 걸 수 없어 ALTER DATABASE 실패)
- 3702Cannot drop database because it is currently in use (사용 중이어서 데이터베이스 삭제 불가)