system_health 세션 사용Use the system_health Session

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

system_health 세션은 SQL ServerSQL Server에 기본적으로 포함된 확장 이벤트 세션입니다.The system_health session is an Extended Events session that is included by default with SQL ServerSQL Server. 이 세션은 SQL Server 데이터베이스 엔진SQL Server Database Engine 이 시작될 때 자동으로 시작되며 성능에 별다른 영향을 주지 않고 실행됩니다.This session starts automatically when the SQL Server 데이터베이스 엔진SQL Server Database Engine starts, and runs without any noticeable performance effects. 이 세션은 데이터베이스 엔진Database Engine의 성능 문제를 해결하는 데 사용할 수 있는 시스템 데이터를 수집합니다.The session collects system data that you can use to help troubleshoot performance issues in the 데이터베이스 엔진Database Engine. 따라서 이 세션은 중지하거나 삭제하지 않는 것이 좋습니다.Therefore, we recommend that you do not stop or delete the session.

이 세션에서 수집하는 정보는 다음과 같습니다.The session collects information that includes the following:

  • 심각도가 20보다 높거나 같은 오류가 발생한 모든 세션의 sql_text 및 session_idThe sql_text and session_id for any sessions that encounter an error that has a severity >=20.

  • 메모리 관련 오류가 발생한 모든 세션의 sql_text 및 session_id.The sql_text and session_id for any sessions that encounter a memory-related error. 이러한 오류에는 17803, 701, 802, 8645, 8651, 8657 및 8902가 포함됩니다.The errors include 17803, 701, 802, 8645, 8651, 8657 and 8902.

  • 잠긴 스케줄러 문제에 대한 기록.A record of any non-yielding scheduler problems. 이러한 오류는 SQL ServerSQL Server 오류 로그에서 오류 17883으로 나타납니다.(These appear in the SQL ServerSQL Server error log as error 17883.)

  • 발견된 교착 상태Any deadlocks that are detected.

  • 래치(또는 사용하려는 다른 리소스)로 인해 15초 이상 대기한 모든 세션의 callstack, sql_text 및 session_idThe callstack, sql_text, and session_id for any sessions that have waited on latches (or other interesting resources) for > 15 seconds.

  • 잠금으로 인해 30초 이상 대기한 모든 세션의 callstack, sql_text 및 session_idThe callstack, sql_text, and session_id for any sessions that have waited on locks for > 30 seconds.

  • 선점형 대기로 인해 오래 동안 대기한 모든 세션의 callstack, sql_text 및 session_id.The callstack, sql_text, and session_id for any sessions that have waited for a long time for preemptive waits. 기간은 대기 유형마다 다릅니다.The duration varies by wait type. 선점형 대기는 SQL ServerSQL Server 가 외부 API 호출을 대기하는 상황입니다.A preemptive wait is where SQL ServerSQL Server is waiting for external API calls.

  • CLR 할당 및 가상 할당 오류의 session_id 및 콜백입니다.The callstack and session_id for CLR allocation and virtual allocation failures.

  • 메모리 브로커, 스케줄러 모니터, 메모리 노드 OOM, 보안 및 연결용 ring_buffer 이벤트입니다.The ring_buffer events for the memory broker, scheduler monitor, memory node OOM, security, and connectivity.

  • sp_server_diagnostics의 시스템 구성 요소 결과입니다.System component results from sp_server_diagnostics.

  • scheduler_monitor_system_health_ring_buffer_recorded에 의해 수집되는 인스턴스 상태입니다.Instance health collected by scheduler_monitor_system_health_ring_buffer_recorded.

  • CLR 할당 실패CLR Allocation failures.

  • connectivity_ring_buffer_recorded를 사용하는 동안 연결 오류가 발생합니다.Connectivity errors using connectivity_ring_buffer_recorded.

  • security_error_ring_buffer_recorded를 사용하는 동안 보안 오류가 발생합니다.Security errors using security_error_ring_buffer_recorded.

세션 데이터 보기Viewing the Session Data

이 세션에서는 링 버퍼 대상을 사용하여 데이터를 저장합니다.The session uses the ring buffer target to store the data. 세션 데이터를 보려면 다음 쿼리를 실행합니다.To view the session data, use the following query:

SELECT CAST(xet.target_data as xml) 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'  

이벤트 파일의 세션 데이터를 보려면 Management Studio에서 사용할 수 있는 확장 이벤트 사용자 인터페이스를 사용합니다.To view the session data from the event file, use the Extended Events user interface available in Management Studio. 자세한 내용은 SQL Server 확장 이벤트의 대상 데이터 고급 보기를 참조하세요.For more information, see Advanced Viewing of Target Data from Extended Events in SQL Server.

system_health 세션 복원Restoring the system_health Session

system_health 세션을 삭제한 경우 쿼리 편집기에서 u_tables.sql 파일을 실행하여 세션을 복원할 수 있습니다.If you delete the system_health session, you can restore it by executing the u_tables.sql file in Query Editor. 이 파일은 다음 폴더에 있으며 여기서 C:는 SQL ServerSQL Server 프로그램 파일을 설치한 드라이브를 나타냅니다.This file is located in the following folder, where C: represents the drive where you installed the SQL ServerSQL Server program files:

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

세션을 복원한 후에는 ALTER EVENT SESSION 문을 사용하거나 개체 탐색기에서 확장 이벤트 노드를 사용하여 세션을 시작해야 합니다.Be aware that after you restore the session, you must start the session by using the ALTER EVENT SESSION statement or by using the Extended Events node in Object Explorer. 그렇지 않으면 다음에 SQL ServerSQL Server 서비스를 다시 시작할 때 세션이 자동으로 시작됩니다.Otherwise, the session starts automatically the next time that you restart the SQL ServerSQL Server service.

참고 항목See Also

확장 이벤트 도구Extended Events Tools