다음을 통해 공유


확장 이벤트 개요

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

XEvents(확장 이벤트) 아키텍처를 사용하면 사용자가 SQL Server, Azure SQL Database, Azure SQL Managed Instance 및 Fabric의 SQL 데이터베이스에서 성능을 모니터링, 식별 또는 해결하는 데 필요한 만큼 또는 적은 데이터를 수집할 수 있습니다. 확장 이벤트는 구성 가능성이 높고, 가벼우며, 확장성이 높습니다. 자세한 내용은 확장 이벤트 아키텍처를 참조하세요.

확장 이벤트는 더 이상 사용되지 않는 SQL 추적 및 SQL Server Profiler 기능을 대체합니다.

확장 이벤트를 시작하려면 빠른 시작: 확장 이벤트를 사용합니다.

참고 항목

Azure SQL Database, Fabric의 SQL 데이터베이스 및 SQL Managed Instance의 경우 대상에 대한 파일이 Azure Storage에 저장되기 때문에 event_file. 자세한 내용은 Azure SQL의 확장 이벤트를 참조하세요.

확장 이벤트의 이점

확장 이벤트는 데이터베이스 엔진에 대한 상세하고 심층적인 보기를 제공하면서 최소한의 시스템 리소스를 사용하는 경량 성능 모니터링 시스템입니다. SQL Server Management Studio는 확장 이벤트에 대한 그래픽 사용자 인터페이스를 제공하여 이벤트 세션을 만들고, 수정하고, 삭제하며, 세션 데이터를 표시하고 분석합니다. Management Studio의 확장 이벤트 지원에 대한 자세한 내용은 다음을 참조하세요.

확장 이벤트 개념

확장 이벤트는 이벤트이벤트 소비자와 같은 ETW(Windows용 이벤트 추적)의 기존 개념을 기반으로 하며 작업조건자와 같은 새로운 개념을 소개합니다.

다음 표에서는 확장 이벤트의 개념을 이해하기 위한 설명서 참조를 제공합니다.

아티클 설명
확장 이벤트 패키지 개체를 포함하는 확장 이벤트 패키지에 대해 설명합니다. 이러한 개체는 확장 이벤트 세션이 실행 중일 때 데이터를 가져오고 처리하는 데 사용됩니다.
확장 이벤트 대상 이벤트 세션이 지속되는 동안 데이터를 수신할 수 있는 이벤트 소비자에 대해 설명합니다.
확장 이벤트 엔진 확장 이벤트 세션을 구현 및 관리하는 엔진에 대해 설명합니다.
확장 이벤트 세션 확장 이벤트 세션에 대해 설명합니다.

확장 이벤트 아키텍처

확장 이벤트는 서버 시스템을 위한 일반적인 이벤트 처리 시스템을 지칭하는 이름입니다. 확장 이벤트 인프라는 데이터베이스 엔진의 데이터 상관 관계와 특정 조건에서 운영 체제 및 데이터베이스 애플리케이션의 데이터 상관 관계를 지원합니다. 운영 체제의 경우 확장 이벤트 출력이 ETW(Windows용 이벤트 추적)로 전달되어야 합니다. ETW는 이벤트 데이터를 운영 체제 또는 애플리케이션 이벤트 데이터와 상호 연결할 수 있습니다.

모든 애플리케이션에는 애플리케이션 내부 및 외부에서 모두 유용한 실행 지점이 있습니다. 애플리케이션 내부에서는 태스크의 초기 실행 중에 수집된 정보를 사용하여 비동기 처리를 큐에 넣을 수 있습니다. 애플리케이션 외부에서 실행 지점은 정보와 함께 모니터링 유틸리티를 제공합니다. 모니터링되는 애플리케이션의 동작 및 성능 특성에 대한 정보입니다.

확장 이벤트는 프로세스 외부의 이벤트 데이터 사용을 지원합니다. 이 데이터는 일반적으로 성능 모니터링을 수행하거나 디버깅을 위해 제품에서 애플리케이션을 개발하는 사용자가 제품을 관리하거나 지원하는 데 사용됩니다. 데이터는 SQL Server Management Studio, XEvent Profiler 및 성능 모니터, T-SQL 또는 Windows 명령줄 도구와 같은 도구를 사용하여 사용되거나 분석됩니다.

확장 이벤트에는 다음과 같은 주요 디자인 측면이 있습니다.

  • 확장 이벤트 엔진은 이벤트 중립적입니다. 이 엔진은 이벤트 내용에 따른 제한이 없으므로 모든 이벤트를 모든 대상에 바인딩할 수 있습니다. 확장 이벤트 엔진에 대한 자세한 내용은 확장 이벤트 엔진을 참조하세요.
  • 이벤트는 확장 이벤트의 대상 이라고 하는 이벤트 소비자와 분리됩니다. 따라서 모든 대상이 모든 이벤트를 수신할 수 있습니다. 또한 발생한 모든 이벤트는 대상에 의해 자동으로 사용될 수 있으며, 이는 추가 이벤트 컨텍스트를 기록하거나 제공할 수 있습니다. 자세한 내용은 확장 이벤트 대상을 참조하세요.
  • 이벤트는 이벤트가 발생할 때 수행할 작업과 다릅니다. 따라서 모든 작업을 모든 이벤트와 연결할 수 있습니다.
  • 조건자는 이벤트 데이터를 캡처해야 하는 시기를 동적으로 필터링할 수 있습니다. 동적 필터링을 통해 확장 이벤트 인프라의 유연성이 높아집니다. 자세한 내용은 확장 이벤트 패키지를 참조하세요.

확장 이벤트는 이벤트 처리를 위한 유연한 솔루션을 제공하는 이벤트 데이터를 동기적으로 생성하고 해당 데이터를 비동기적으로 처리할 수 있습니다. 또한 확장 이벤트는 다음 기능도 지원합니다.

  • 사용자가 문제 해결을 위해 특정 이벤트를 격리할 수 있도록 하면서 서버 시스템 전체에서 이벤트를 처리하는 통합된 접근 방식
  • 기존 ETW 도구 통합 및 지원
  • Transact-SQL을 사용하는 완전히 구성 가능한 이벤트 처리 메커니즘
  • 활성 프로세스에 거의 영향을 주지 않고 동적으로 이를 모니터링할 수 있는 기능
  • 눈에 띄는 성능 효과 없이 실행되는 기본 시스템 상태 세션 세션은 성능 문제를 해결하는 데 사용할 수 있는 시스템 데이터를 수집합니다. 자세한 내용은 system_health 세션 사용을 참조하세요.

확장 이벤트 작업

Management Studio 또는 Transact-SQL을 통해 Transact-SQL DDL(데이터 정의 언어) 문을 실행하거나 동적 관리 뷰와 함수 또는 카탈로그 뷰를 사용하면 해당 SQL Server 환경에 맞는 간단하거나 복잡한 SQL Server 확장 이벤트 문제 해결 솔루션을 만들 수 있습니다.

작업 설명 아티클
개체 탐색기를 사용하여 이벤트 세션을 관리합니다. 개체 탐색기에서 이벤트 세션 관리
사용 가능한 확장 이벤트 대상을 사용하는 방법을 설명합니다. 확장 이벤트 대상
대상 데이터를 보고 새로 고치는 방법에 대해 설명합니다. SQL Server Management Studio에서 이벤트 데이터 보기
확장 이벤트 세션의 아키텍처를 설명합니다. 확장 이벤트 세션
확장 이벤트 도구를 사용하여 확장 이벤트 세션을 만들고 관리하는 방법에 대해 설명합니다. 확장 이벤트 도구
확장 이벤트 세션을 변경하는 방법에 대해 설명합니다. 확장 이벤트 세션 변경
이벤트와 관련된 필드에 대한 정보를 가져오는 방법에 대해 설명합니다. 모든 이벤트에 대한 필드 가져오기
등록된 패키지에서 사용할 수 있는 이벤트를 찾는 방법에 대해 설명합니다. 확장 이벤트를 위한 시스템 뷰의 SELECT 및 JOIN
각 SQL 추적 이벤트 및 관련 열에 해당하는 확장 이벤트의 이벤트 및 작업을 확인하는 방법에 대해 설명합니다. SQL 추적 이벤트 클래스에 해당하는 확장 이벤트 보기
기존 SQL 추적 스크립트를 확장 이벤트 세션으로 변환하는 방법에 대해 설명합니다. 기존 SQL 추적 스크립트를 확장 이벤트 세션으로 변환
잠금을 보유한 쿼리, 쿼리 계획 및 잠금이 수행된 시점의 Transact-SQL 스택을 확인하는 방법에 대해 설명합니다. 잠금을 보유한 쿼리 판정
잠금의 원인을 식별하는 방법에 대해 설명합니다. 가장 많은 잠금이 발생한 개체 찾기
Windows용 이벤트 추적에서 확장 이벤트를 사용하여 시스템 활동을 모니터링하는 방법에 대해 설명합니다. 확장 이벤트를 사용하여 시스템 작업 모니터링
확장 이벤트에 카탈로그 뷰 및 DMV(동적 관리 뷰) 사용 확장 이벤트를 위한 시스템 뷰의 SELECT 및 JOIN

확장 이벤트 카탈로그 뷰

확장 이벤트는 여러 카탈로그 뷰를 제공합니다. 카탈로그 뷰는 이벤트 세션 메타데이터 또는 정의에 대해 알려줍니다. 활성 이벤트 세션의 인스턴스에 대한 자세한 내용은 확장 이벤트 동적 관리 뷰를 참조하세요.

카탈로그 뷰의 이름 설명
sys.database_event_session_actions 데이터베이스 범위 이벤트 세션의 각 이벤트에 대한 각 작업에 대한 행을 반환합니다.
sys.database_event_session_events 데이터베이스 범위 이벤트 세션의 각 이벤트에 대한 행을 반환합니다.
sys.database_event_session_fields 데이터베이스 범위 세션의 이벤트 및 대상에 명시적으로 설정된 사용자 지정 가능한 각 열에 대한 행을 반환합니다.
sys.database_event_session_targets 데이터베이스 범위 이벤트 세션의 각 이벤트 대상에 대한 행을 반환합니다.
sys.database_event_sessions 각 데이터베이스 범위 이벤트 세션에 대한 행을 반환합니다.

확장 이벤트 동적 관리 뷰

확장 이벤트는 여러 DMV(동적 관리 뷰)를 제공합니다. DMV는 세션 및 대상 통계와 같은 활성 (시작) 이벤트 세션에 대한 정보를 반환합니다.

DMV의 이름 설명
sys.dm_xe_database_session_event_actions 데이터베이스 범위 이벤트 세션의 동작에 대한 정보를 반환합니다.
sys.dm_xe_database_session_events 데이터베이스 범위에서 정의된 이벤트 세션에 대한 정보를 반환합니다.
sys.dm_xe_database_session_object_columns 데이터베이스 범위 세션에 바인딩된 개체의 구성 값을 표시합니다.
sys.dm_xe_database_session_targets 데이터베이스 범위 이벤트 세션 대상에 대한 정보를 반환합니다.
sys.dm_xe_database_sessions 현재 데이터베이스에서 실행 중인 각 데이터베이스 범위 이벤트 세션에 대한 행을 반환합니다.

Permissions

Azure SQL Database, Fabric의 SQL Database, Azure SQL Managed Instance 및 SQL Server 2022 이상 버전에서 확장 이벤트는 세분화된 권한 모델을 지원합니다. 다음 권한을 부여할 수 있습니다.

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

이러한 각 사용 권한 컨트롤에 대한 자세한 내용은 CREATE EVENT SESSION, ALTER EVENT SESSIONDROP EVENT SESSION을 참조하세요.

이러한 모든 권한은 데이터베이스, SQL 관리형 인스턴스 또는 SQL Server 인스턴스에 대한 권한에 포함 CONTROL 됩니다. Azure SQL Database에서 데이터베이스 소유자(dbo), db_owner 데이터베이스 역할의 멤버 및 논리 서버 관리자는 데이터베이스 CONTROL 권한을 보유합니다. Azure SQL Managed Instance 및 SQL Server에서 서버 역할의 sysadmin 멤버는 인스턴스에 CONTROL 대한 권한을 보유합니다.

코드 예제는 Azure SQL Database, Fabric의 SQL 데이터베이스 및 SQL Managed Instance에 대해 다를 수 있습니다.

SQL Server용으로 작성된 일부 Transact-SQL 코드 예제는 Azure SQL Database 또는 Fabric의 SQL 데이터베이스에서 실행하려면 약간의 변경이 필요합니다. 이러한 코드 예제의 한 범주에는 데이터베이스 엔진 유형에 따라 이름 접두사 차이가 있는 카탈로그 뷰가 포함됩니다.

  • server_ - SQL Server 및 Azure SQL Managed Instance의 접두사
  • database_ - Azure SQL Database, Fabric의 SQL 데이터베이스 및 SQL Managed Instance에 대한 접두사

Fabric의 Azure SQL Database 및 SQL 데이터베이스는 데이터베이스 범위 이벤트 세션만 지원합니다. SQL Server Management Studio(SSMS)는 Azure SQL 데이터베이스에서 데이터베이스 범위가 지정된 이벤트 세션을 지원합니다: 객체 탐색기의 각 데이터베이스 아래에 데이터베이스 범위가 지정된 세션을 포함하는 확장 이벤트 노드가 나타납니다.

Azure SQL Managed Instance는 데이터베이스 범위 세션과 더 서버 범위 세션을 모두 지원합니다. SSMS는 SQL Managed Instance의 서버 범위 세션을 완벽하게 지원합니다. 모든 서버 범위 세션을 포함하는 확장 이벤트 노드는 개체 탐색기에서 각 관리되는 인스턴스의 관리 폴더 아래에 표시됩니다.

참고 항목

서버 범위 이벤트 세션은 Azure SQL Managed Instance에 권장됩니다.

데이터베이스 범위 이벤트 세션은 Azure SQL Managed Instance용 SSMS의 개체 탐색기에 표시되지 않습니다. SQL 관리형 인스턴스에서 데이터베이스 범위 이벤트 세션은 Transact-SQL로만 쿼리하고 관리할 수 있습니다.

예시를 위해 다음 표에서는 카탈로그 뷰의 두 하위 집합을 나열하고 비교합니다. 하위 집합은 각기 다른 데이터베이스 엔진 유형을 지원하기 때문에 이름 접두사가 서로 다릅니다.

SQL Server 및 Azure SQL Managed Instance의 이름 Azure SQL Database의 이름, 패브릭의 SQL 데이터베이스, 그리고 Azure SQL Managed Instance
sys.server_event_session_actions
sys.server_event_session_events
sys.server_event_session_fields
sys.server_event_session_targets
sys.server_event_sessions
sys.database_event_session_actions
sys.database_event_session_events
sys.database_event_session_fields
sys.database_event_session_targets
sys.database_event_sessions