증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2016 SP2(서비스 팩 2) CU2(누적 업데이트 2) 이상 버전을 사용합니다.
-
많은 데이터베이스(일반적으로 200개 이상)를 호스트하는 인스턴스를 실행하고 있으며, 인스턴스는 Always On AG(가용성 그룹)(일반적으로 보조 서버 역할)의 일부입니다. 참고 모든 사용자 데이터베이스는 AG에 속할 필요가 없습니다.
-
VSS(볼륨 섀도 복사본 서비스) 애플리케이션을 실행하여 SQL Server 인스턴스의 전체 또는 일부 데이터베이스의 백업을 요청합니다.
이 시나리오에서 SQL 기록기 서비스 교착 상태에 도달하고 마스터의 내부 시스템 테이블에 대한 잠금을 무기한 유지할 수 있습니다(object_id 28인 sys.sysdbreg). 또한 이러한 잠금은 sys.dm_hadr_database_replica_states 같은 시스템 DMV(동적 관리 뷰)에서 읽을 수 없으므로 인스턴스의 주요 보조 차단으로 이어질 수 있습니다. 또한 블록 체인 분석은 SQL Server VSS 기록기에서 시작된 다음 문을 헤드 블로커로 반환합니다.
"master.sys.databases에서 이름, recovery_model_desc, state_desc, CONVERT(정수, is_in_standby), ISNULL(source_database_id,0)을 선택합니다."
그러면 SQL Server 대기 상태가 ASYNC_NETWORK_IO.
참고 ASYNC_NETWORK_IO 대기가 구현되므로 wait_time 2초(2,000ms)를 초과하지 않습니다. 그러나 대기 유형은 무기한으로 유지되며 이 상황은 자체적으로 차단을 해제하지 않습니다. 상황을 차단 해제하려면 SQL 기록기 서비스 종료해야 합니다.
이 헤드 블로커에 의해 차단된 SPID 중에는 종종 DBSTARTUP SPID(alwayson 보조 DB 다시 실행)가 있습니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
해결 방법
이 문제는 SQL Server 대한 다음 누적 업데이트에서 해결되었습니다.
SQL Server 대한 누적 업데이트 정보:
SQL Server 대한 각각의 새로운 누적 업데이트에는 모든 핫픽스 및 이전 누적 업데이트에 포함된 모든 보안 수정 사항이 포함됩니다. SQL Server 대한 최신 누적 업데이트를 확인하세요.
참조
Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아봅니다.