확장 이벤트 패키지

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

패키지는 SQL Server 데이터베이스 엔진 확장 이벤트 개체에 대한 컨테이너입니다. 예를 들어 확장 이벤트를 지원하는 모든 데이터베이스 엔진 다음 패키지가 있습니다.

  • package0 - 확장 이벤트 시스템 개체입니다. 기본 패키지입니다.
  • sqlserver- 데이터베이스 엔진 관련된 개체
  • sqlos - SQLOS(SQL 운영 체제) 관련 개체입니다.

참고 항목

패키지는 SecAudit 감사 기능에서 내부적으로 사용됩니다. 이 패키지의 개체는 DDL(확장 이벤트 데이터 정의 언어)을 통해 사용할 수 없습니다.

패키지는 패키지가 포함된 이름, GUID 및 이진 모듈로 식별됩니다. 모듈은 실행 파일 또는 동적 링크 라이브러리일 수 있습니다. 자세한 내용은 sys.dm_xe_packages 참조하세요.

패키지는 다음 개체를 포함하거나 모두 포함할 수 있으며, 이 개체는 이 문서의 뒷부분에서 자세히 설명합니다.

  • 이벤트
  • Targets
  • 작업
  • 유형
  • 조건자
  • 지도

다른 패키지의 개체는 이벤트 세션에서 혼합할 수 있습니다. 자세한 내용은 확장 이벤트 세션을 참조 하세요.

패키지 콘텐츠

다음 그림에서는 패키지에 존재할 수 있는 개체를 보여 줍니다.

Diagram that shows the relationship of a module, packages, and objects.

이벤트

이벤트는 SQL Server와 같은 프로그램의 실행 경로에 대한 관심 지점을 모니터링합니다. 이벤트가 발생하면 관심 지점에 도달했다는 사실과 이벤트가 발생한 시점의 상태 정보가 포함됩니다.

이벤트는 추적 용도 또는 트리거 작업에만 사용할 수 있습니다. 이러한 동작은 동기적이거나 비동기적일 수 있습니다.

참고 항목

이벤트에는 이벤트 발생에 대한 응답으로 트리거할 수 있는 작업에 대한 지식이 없습니다.

패키지가 확장 이벤트에 등록된 후에는 패키지의 이벤트 집합을 변경할 수 없습니다.

모든 이벤트에는 콘텐츠를 정의하는 버전이 지정된 스키마가 있습니다. 이 스키마는 정의된 형식의 이벤트 열로 구성됩니다. 특정 형식의 이벤트는 항상 스키마에 지정된 순서대로 정확하게 데이터를 제공해야 합니다. 그러나 이벤트 대상이 제공된 모든 데이터를 사용할 필요는 없습니다.

이벤트 분류

확장 이벤트는 ETW(Windows용 이벤트 추적)와 유사한 이벤트 범주 분류 모델을 사용합니다. 두 이벤트 속성은 분류, 채널 및 키워드(keyword) 사용됩니다. 이러한 속성을 사용하면 ETW 및 해당 도구와 확장 이벤트의 통합이 지원됩니다.

채널이벤트의 대상 그룹을 식별합니다. 채널은 다음 표에 설명되어 있습니다.

용어 정의
관리 관리 이벤트는 주로 최종 사용자, 관리자 및 지원을 대상으로 합니다. 관리 채널에서 발견되는 이벤트는 관리자가 수행할 수 있는 잘 정의된 솔루션의 문제를 나타낼 수 있습니다. 관리 이벤트의 예는 애플리케이션 연결에 실패하는 경우입니다. 이러한 이벤트는 문서화되거나 판독기에게 문제를 해결하기 위해 수행할 작업을 알려주는 메시지가 연결되어 있습니다.
작동 Operational 이벤트는 문제 또는 발생을 분석 및 진단하는 데 사용되며 문제 또는 발생을 기반으로 도구 또는 태스크를 트리거하는 데 사용할 수 있습니다.
분석 분석 이벤트는 대용량으로 게시됩니다. 이러한 이벤트는 프로그램 작업을 나타내며 일반적으로 성능 검사에 사용됩니다.
디버그 디버그 이벤트는 주로 개발자가 디버깅 문제를 진단하는 데 사용됩니다.

디버그 채널의 이벤트는 내부 구현 관련 상태 데이터를 반환합니다. 이벤트가 반환하는 스키마와 데이터는 예고 없이 변경되거나, 유효하지 않거나, 이후 버전의 데이터베이스 엔진 제거될 수 있습니다.

키워드(keyword) 애플리케이션별이며 관련 이벤트를 보다 세밀하게 그룹화할 수 있으므로 세션에서 사용하려는 이벤트를 보다 쉽게 지정하고 검색할 수 있습니다. 다음 쿼리를 사용하여 키워드(keyword) 정보를 가져올 수 있습니다.

SELECT map_value AS Keyword
FROM sys.dm_xe_map_values
WHERE name = 'keyword_map';

Targets

대상은 이벤트 소비자입니다. 대상은 이벤트가 발생하는 스레드에서 동기적으로 이벤트를 처리하거나 시스템을 통해 제공되는 스레드에서 비동기적으로 이벤트를 처리합니다. 확장 이벤트는 이벤트 출력을 지시하는 데 적절하게 사용할 수 있는 여러 대상 형식을 제공합니다. 자세한 내용은 확장 이벤트의 대상을 참조 하세요.

절을 ADD TARGET 사용하여 이벤트 세션에 대상을 추가합니다.

작업

동작은 이벤트에 대한 한 차례 또는 일련의 프로그래밍 방식 응답입니다. 작업은 이벤트에 바인딩되며 각 이벤트에는 고유한 작업 집합이 있을 수 있습니다.

참고 항목

특정 이벤트에 대한 작업은 다른 이벤트에 바인딩할 수 없습니다.

이벤트에 바인딩된 작업은 이벤트를 발생시킨 스레드에서 동기적으로 호출됩니다. 다양한 유형의 작업이 있으며 다양한 기능을 갖추고 있습니다. 작업은 다음을 수행할 수 있습니다.

  • 프로세스 덤프 캡처
  • 변수 스토리지를 사용하여 로컬 컨텍스트에 상태 정보 저장
  • 이벤트 데이터 집계
  • 이벤트 데이터에 데이터 추가

작업 사용의 일반적인 예는 다음과 같습니다.

  • 이벤트를 실행하는 스레드에서 실행 중인 쿼리의 SQL 텍스트 수집
  • 쿼리 계획 핸들, 쿼리 해시 및 쿼리 계획 해시 수집
  • 클라이언트 호스트 이름, 보안 주체 이름, 연결 ID 등 이벤트를 발생시키는 세션의 특성을 수집합니다.
  • 호출 스택 수집
  • 특정 오류가 발생할 때 프로세스 덤프 캡처

이 절을 ACTION 사용하여 이벤트 세션에 작업을 추가합니다.

조건자

조건자는 이벤트를 처리할 때 이벤트를 평가하는 데 사용되는 논리적 규칙의 집합입니다. 이렇게 하면 확장 이벤트 사용자가 특정 조건에 따라 이벤트 데이터를 선택적으로 캡처할 수 있습니다.

조건자는 로컬 컨텍스트에 데이터를 저장할 수 있으며, 이 조건자는 n분마다 한 번씩 또는 이벤트가 발생하는 n번마다 true를 반환하는 조건자를 만드는 데 사용할 수 있습니다. 이 로컬 컨텍스트 스토리지를 사용하여 조건자를 동적으로 업데이트할 수도 있으므로 이벤트에 유사한 데이터가 포함된 경우 향후 이벤트가 발생하지 않습니다.

조건자는 이벤트별 데이터와 스레드 ID 등의 컨텍스트 정보를 검색할 수 있습니다. 조건자는 완전한 부울 식으로 평가될 수 있으며 처음으로 전체 식이 false가 될 때 단락(short circuit)을 지원합니다.

참고 항목

이전 조건자 검사 실패하면 부작용이 있는 조건자가 평가되지 않을 수 있습니다.

절을 WHERE 사용하여 이벤트 세션에 조건자를 추가합니다.

유형

패키지에서 각 Extended Events 개체에는 형식이 있습니다. 사용되는 형식은 다음과 같습니다.

  • action
  • event
  • message
  • pred_compare
  • pred_source
  • target
  • type

자세한 내용은 sys.dm_xe_objects 참조하세요.

지도

맵 테이블은 내부 값을 문자열에 매핑하므로 사용자가 값이 무엇을 나타내는지 알 수 있습니다. 사용자는 숫자 값만 가져올 수 있는 대신 내부 값에 대한 의미 있는 설명을 얻을 수 있습니다. 다음 쿼리는 맵 값을 가져오는 방법을 보여 있습니다.

SELECT map_key, map_value
FROM sys.dm_xe_map_values
WHERE name = 'lock_mode';

위의 쿼리는 다음 출력을 생성합니다.

map_key map_value
0 NL
1 SCH_S
2 SCH_M
3 S
4 U
5 X
6 IS
7 IU
8 IX
9 SIU
10 SIX
11 UIX
12 BU
13 RS_S
14 RS_U
15 RI_NL
16 RI_S
17 RI_U
18 RI_X
19 RX_S
20 RX_U
21 LAST_MODE

이 테이블을 예로 사용하여 이름이 지정된 lock_mode열이 있고 해당 값이 5있다고 가정합니다. 테이블은 매핑을 5 나타냅니다. 즉, 잠금 유형이 배타적입니다.X