적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
확장 이벤트 세션은 확장 이벤트 엔진을 호스트하는 SQL Server 데이터베이스 엔진 프로세스에서 만들어집니다. 확장 이벤트 세션의 다음과 같은 요소는 확장 이벤트 인프라 및 프로세스를 파악할 수 있는 컨텍스트를 제공합니다.
세션 상태 확장 이벤트 세션이 실행될 때
CREATE EVENT SESSION및ALTER EVENT SESSION문이 실행되는 다양한 상태입니다.세션 콘텐츠 및 특성 대상 및 이벤트와 같은 확장 이벤트 세션의 콘텐츠와 이러한 개체가 세션 또는 세션 간에 관련되는 방식입니다.
세션 상태
다음 그림에서는 확장 이벤트 세션의 다양한 상태를 보여 줍니다.
앞의 그림을 참조하여 이벤트 세션에 대해 다른 DDL(데이터 정의 언어) 명령이 실행됨에 따라 세션 상태가 변경되는 것을 관찰합니다. 다음 표에서는 이러한 상태 변화에 대해 설명합니다.
| 일러스트레이션 레이블 | DDL 문 | 설명 |
|---|---|---|
Create |
CREATE EVENT SESSION |
호스트 프로세스는 CREATE EVENT SESSION에서 제공하는 메타데이터를 포함하는 세션 개체를 만듭니다. 호스트 프로세스는 세션 정의 및 사용자 권한 수준을 검사하고 master 데이터베이스에 메타데이터를 저장합니다. 이 시점에서 세션이 활성화되지 않습니다. |
Alter |
ALTER EVENT SESSION: STATE=START |
호스트 프로세스가 세션을 시작합니다. 호스트 프로세스는 저장된 메타데이터를 읽고 세션 정의를 확인하며 사용자 권한 수준을 확인하고 세션을 만듭니다. 이벤트 및 대상과 같은 세션 개체가 로드되고 이벤트 처리가 활성화됩니다. |
Alter |
ALTER EVENT SESSION: STATE=STOP |
호스트 프로세스는 활성 세션을 중지하지만 메타데이터를 유지합니다. |
Drop |
DROP EVENT SESSION |
세션이 활성 상태인지 여부에 따라 Drop(DROP SESSION)은 메타데이터를 삭제하고 활성 세션을 닫거나 세션 메타데이터를 삭제합니다. |
세션 콘텐츠 및 특성
확장 이벤트 세션에는 한 세션의 구성이 다른 세션의 구성을 변경하지 않는다는 암시적 경계가 있습니다. 그러나 이러한 경계는 이벤트 또는 대상 형식이 둘 이상의 세션에서 사용되는 것을 방지하지 않습니다.
다음 그림에서는 세션 콘텐츠와 패키지와 세션 간의 관계를 보여 줍니다.
앞의 그림을 참조하여 다음 사항에 유의하십시오.
- 패키지 개체와 세션 간의 매핑은 다 대 다입니다. 즉, 특정 형식의 개체가 여러 세션에 나타날 수 있으며 세션에 여러 개체가 포함될 수 있습니다.
- 동일한 이벤트(이벤트 1) 또는 대상 유형(대상 1)을 둘 이상의 세션에서 사용할 수 있습니다.
세션에는 다음과 같은 특성이 있습니다.
- 작업 및 조건자는 세션별로 이벤트에 바인딩됩니다. 작업 1 및 조건자 Z가 있는 세션 A에 이벤트 1이 있는 경우 이는 조건자가 없는 Action 2 및 Action 3이 있는 세션 B에서 이벤트 1을 갖는 데 어떤 식으로든 영향을 주지 않습니다.
- 정책이 세션에 연결되어 버퍼링과 디스패치, 인과 관계 추적을 처리합니다.
버퍼링은 이벤트 세션이 실행되는 동안 이벤트 데이터가 저장되는 방식을 나타냅니다. 버퍼링 정책은 이벤트 데이터에 사용할 메모리 양과 이벤트에 대한 손실 정책을 지정합니다. 디스패치는 처리 대상에 제공되기 전에 이벤트가 버퍼에 유지되는 기간을 나타냅니다.
인과관계 추적은 여러 작업에 걸쳐 작동합니다. 인과 관계 추적을 사용하도록 설정하면 발생한 각 이벤트에는 시스템 전체에서 고유한 활동 ID가 있습니다. 작업 ID는 작업에 대한 모든 이벤트에서 일정하게 유지되는 GUID 값과 이벤트가 발생할 때마다 증가하는 시퀀스 번호의 조합입니다. 한 작업으로 인해 다른 작업에서 작업이 수행되면 부모의 활동 ID가 자식 작업으로 전송됩니다. 자식 태스크는 처음 이벤트를 발생시킬 때 부모의 작업 ID를 출력합니다.
시간 제한 이벤트 세션
SQL Server 2025(17.x)부터 지정된 시간이 경과한 후 자동으로 중지되는 이벤트 세션을 만들 수 있습니다. 이렇게 하면 세션이 실수로 무기한 실행되어 리소스를 사용하고 잠재적으로 많은 양의 데이터를 생성할 수 있는 상황을 방지할 수 있습니다.
세션에 의해 생성된 이벤트 데이터가 방대한 경우 시간 제한 이벤트 세션을 사용하면 특정 기간 동안 더 작은 대상 진단 데이터를 캡처할 수 있습니다. 시간 바인딩된 이벤트 세션을 수동으로 시작하거나 선택한 시간에 예약된 작업을 사용하여 세션이 무기한 실행되지 않도록 보장할 수 있습니다.
이벤트 세션을 시간 제한으로 만들려면 세션을 만들거나 수정할 MAX_DURATION 때 인수를 지정합니다. 자세한 내용은 CREATE EVENT SESSION 및 ALTER EVENT SESSION을 참조하세요.
다른 이벤트 세션과 마찬가지로 ALTER EVENT SESSION ... STATE = STOP 문을 사용하여 최대 기간 시간이 경과하기 전에 시간 제한된 세션을 중지할 수 있습니다. 세션이 다시 시작되면 지정된 MAX_DURATION 전체 기간이 다시 경과한 후 세션이 자동으로 중지됩니다.
기존 이벤트 세션을 수정하여 다른 최대 지속 시간을 지정하거나 ALTER EVENT SESSION을 지정하여 제거할 수도 있습니다. 설정을 수정 MAX_DURATION 하려면 세션을 중지해야 합니다.
이벤트 세션이 시간 제한 max_duration 인 경우 sys.server_event_sessions 카탈로그 뷰의 열에 세션의 최대 기간(초)이 표시됩니다. 값이 0인 경우 이벤트 세션의 기간은 무제한입니다.