system_health 세션 사용

적용 대상:SQL ServerAzure SQL Managed Instance

세션은 system_health SQL Server 및 Azure SQL Managed Instance에 기본적으로 포함된 확장 이벤트 세션입니다. 이 세션은 데이터베이스 엔진 시작될 때 자동으로 시작되며 눈에 띄는 성능 오버헤드 없이 실행됩니다. 세션은 데이터베이스 엔진 성능 문제를 해결하는 데 사용할 수 있는 시스템 데이터를 수집합니다.

Important

세션을 중지, 변경 또는 삭제 system_health 하지 않는 것이 좋습니다. 세션 설정에 system_health 대한 변경 내용은 향후 제품 업데이트로 덮어쓸 수 있습니다.

세션은 다음 정보를 포함하는 정보를 수집합니다.

  • sql_textsession_id 심각도 >= 20인 오류가 발생한 모든 세션의 경우
  • sql_textsession_id 메모리 관련 오류가 발생하는 모든 세션에 대한 것입니다. 오류에는 17803, 701, 802, 8645, 8651, 8657 및 8902가 포함됩니다.
  • 비수익 스케줄러 문제의 레코드입니다. SQL Server 오류 로그에 오류 17883으로 표시됩니다.
  • 교착 상태 그래프를 포함하여 검색된 모든 교착 상태입니다.
  • callstacksql_textsession_id 래치(또는 기타 흥미로운 리소스)에서 15초 동안 기다린 모든 세션의 > 경우
  • callstacksql_textsession_id 30초 동안 잠금을 기다린 모든 세션의 경우 >
  • callstacksql_textsession_id 점 대기를 위해 오랜 시간 동안 기다린 모든 세션의 경우 기간은 대기 유형에 따라 다릅니다. 선점 대기는 SQL Server가 외부 API 호출을 대기하는 위치입니다.
  • callstacksession_id CLR 할당 및 가상 할당 오류의 경우
  • 메모리 브로커, 스케줄러 모니터, 메모리 노드 OOM, 보안 및 연결에 대한 링 버퍼 이벤트입니다.
  • sp_server_diagnostics의 시스템 구성 요소 결과입니다.
  • 에 의해 scheduler_monitor_system_health_ring_buffer_recorded수집된 인스턴스 상태
  • CLR 할당 실패
  • 를 사용하는 connectivity_ring_buffer_recorded커넥트성 오류
  • 를 사용하는 security_error_ring_buffer_recorded보안 오류

참고 항목

교착 상태에 대한 자세한 내용은 교착 상태 가이드참조하세요. SQL 오류 메시지에 대한 자세한 내용은 데이터베이스 엔진 이벤트 및 오류를 참조하세요.

system_health 세션 데이터 보기

세션은 링 버퍼 대상과 이벤트 파일 대상을 모두 사용하여 데이터를 저장합니다. 이벤트 파일 대상은 최대 크기 5MB, 파일 보존 정책 4개로 구성됩니다.

SQL Server Management Studio에서 사용할 수 있는 확장 이벤트 사용자 인터페이스를 사용하여 링 버퍼 대상의 세션 데이터를 보려면 SQL Server의 확장 이벤트에서 대상 데이터의 고급 보기 - 라이브 데이터 감시를 참조하세요.

Transact-SQL을 사용하여 링 버퍼 대상에서 세션 데이터를 보려면 다음 쿼리를 사용합니다.

SELECT CAST(xet.target_data as xml) AS target_data
FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe
ON xe.address = xet.event_session_address
WHERE xe.name = 'system_health'

이벤트 파일에서 세션 데이터를 보려면 SQL Server Management Studio에서 사용할 수 있는 확장 이벤트 이벤트 뷰어 UI를 사용합니다. 자세한 내용은 SQL Server Management Studio에서 이벤트 데이터 보기를 참조 하세요.

system_health 세션 복원

세션을 삭제하는 경우 스크립트를 system_health 실행하여 복원할 u_tables.sql 수 있습니다. 이 파일은 SQL Server 프로그램 파일을 설치한 드라이브와 MSSQLnn SQL Server의 주 버전을 나타내는 다음 폴더 C: 에 있습니다.

C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install

세션을 복원한 후에는 문을 사용 ALTER EVENT SESSION 하거나 개체 탐색기 확장 이벤트 노드를 사용하여 세션을 시작해야 합니다. 그렇지 않으면 다음에 SQL Server 서비스를 다시 시작할 때 세션이 자동으로 시작됩니다.

Azure SQL의 system_health 세션

Azure SQL Managed Instance system_health 에서 개체 탐색기 대상 또는 ring_buffer 대상을 event_file 마우스 오른쪽 단추로 클릭하고 대상 데이터 보기를 선택하여 세션 데이터를 볼 수 있습니다.

Azure SQL Database에는 기본 제공 system_health 확장 이벤트 세션이 없지만 함수를 사용하여 sys.fn_xe_file_target_read_file() 직접 만들고 Azure Storage에 저장하는 확장 이벤트 세션에서 읽을 수 있습니다. 연습은 Azure SQL Database의 확장 이벤트에 대한 이벤트 파일 대상 코드를 참조 하세요.