SQL Server 확장 이벤트 패키지SQL Server Extended Events Packages

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

패키지는 SQL ServerSQL Server 확장 이벤트 개체를 위한 컨테이너입니다.A package is a container for SQL ServerSQL Server Extended Events objects. 확장 이벤트 패키지에는 다음과 같은 세 가지 종류가 있습니다.There are three kinds of Extended Events packages, which include the following:

  • package0 - 확장 이벤트 시스템 개체입니다.package0 - Extended Events system objects. 기본 패키지입니다.This is the default package.

  • sqlserver - SQL ServerSQL Server 관련 개체입니다.sqlserver - SQL ServerSQL Server related objects.

  • sqlos - SQLOS( SQL ServerSQL Server 운영 체제) 관련 개체입니다.sqlos - SQL ServerSQL Server Operating System (SQLOS) related objects.

참고

SecAudit 패키지는 SQL ServerSQL Server 감사에 사용됩니다.The SecAudit package is used by SQL ServerSQL Server Audit. 이 패키지의 개체는 확장 이벤트 DDL(데이터 정의 언어)을 통해 사용할 수 없습니다.None of the objects in the package are available through the Extended Events data definition language (DDL).

패키지는 이름, GUID 및 패키지가 들어 있는 바이너리 모듈로 식별할 수 있습니다.Packages are identified by a name, a GUID, and the binary module that contains the package. 자세한 내용은 sys.dm_xe_packages(Transact-SQL)를 참조하세요.For more information, see sys.dm_xe_packages (Transact-SQL).

패키지에는 다음과 같은 개체 전체 또는 일부가 포함될 수 있습니다. 각 개체에 대해서는 이 항목의 뒷부분에서 자세히 설명합니다.A package can contain any or all of the following objects, which are discussed in greater detail later in this topic:

  • 이벤트Events

  • 대상Targets

  • 작업Actions

  • 유형Types

  • 조건자Predicates

  • 지도Maps

    서로 다른 패키지의 개체를 혼합하여 하나의 이벤트 세션에 사용할 수 있습니다.Objects from different packages can be mixed in an event session. 자세한 내용은 SQL Server Extended Events Sessions을 참조하세요.For more information, see SQL Server Extended Events Sessions.

패키지 내용Package Contents

다음 그림에서는 패키지에 포함될 수 있는 개체를 보여 줍니다. 패키지는 모듈에 포함되며The following illustration shows the objects that can exist in packages, which are contained in a module. 모듈은 실행 파일 또는 동적 연결 라이브러리일 수 있습니다.A module can be an executable or a dynamic link library.

모듈, 패키지 및 개체의 관계The relationship of a module, packages, and object

이벤트Events

이벤트는 SQL ServerSQL Server같은 프로그램의 실행 경로 내에서 특정 지점을 모니터링합니다.Events are monitoring points of interest in the execution path of a program, such as SQL ServerSQL Server. 이벤트의 발생은 이러한 관심 지점에 도달했다는 사실을 알림과 동시에 이벤트가 발생한 시점의 상태 정보를 제공하게 됩니다.An event firing carries with it the fact that the point of interest was reached, and state information from the time the event was fired.

이벤트는 추적이나 동작 트리거를 위해서만 사용할 수 있습니다.Events can be used solely for tracing purposes or for triggering actions. 이러한 동작은 동기적이거나 비동기적일 수 있습니다.These actions can either be synchronous or asynchronous.

참고

이벤트에는 이벤트 발생에 대한 응답으로 트리거할 수 있는 동작에 대한 정보가 없습니다.An event does not have any knowledge of the actions that may be triggered in response to the event firing.

패키지를 확장 이벤트에 등록한 후에는 패키지의 이벤트 집합을 변경할 수 없습니다.A set of events in a package cannot change after the package is registered with Extended Events.

모든 이벤트에는 내용을 정의하는 버전이 지정된 스키마가 있습니다.All events have a versioned schema which defines their contents. 이러한 스키마는 잘 정의된 형식의 이벤트 열로 구성됩니다.This schema is composed of event columns with well defined types. 특정 형식의 이벤트는 항상 스키마에 지정된 순서대로 정확하게 데이터를 제공해야 합니다.An event of a specific type must always provide its data in exactly the same order that is specified in the schema. 하지만 이벤트 대상이 제공된 모든 데이터를 소비할 필요는 없습니다.However, an event target does not have to consume all the data that is provided.

이벤트 범주 분류Event Categorization

확장 이벤트는 ETW(Windows용 이벤트 추적)와 유사한 이벤트 범주 분류 모델을 사용합니다.Extended Events uses an event categorization model similar to Event Tracing for Windows (ETW). 범주 분류에는 채널 및 키워드라는 두 가지 이벤트 속성이 사용됩니다.Two event properties are used for categorization, channel and keyword. 이러한 속성을 사용하여 확장 이벤트를 ETW 및 그 도구와 통합할 수 있습니다.Using these properties supports the integration of Extended Events with ETW and its tools.

채널Channel

채널은 이벤트의 대상을 식별합니다.A channel identifies the audience for an event. 다음 표에서는 이러한 채널에 대해 설명합니다.These channels are described in the following table.

용어Term 정의Definition
AdminAdmin Admin 이벤트는 주로 최종 사용자, 관리자 및 지원 담당자를 대상으로 합니다.Admin events are primarily targeted to the end users, administrators, and support. Admin 채널의 이벤트는 관리자가 대처할 수 있는 잘 정의된 솔루션이 마련된 문제를 나타냅니다.The events that are found in the admin channels indicate a problem with a well-defined solution that an administrator can act on. Admin 이벤트의 예로 응용 프로그램에서 프린터를 연결하는 데 실패한 경우를 들 수 있습니다.An example of an admin event is when an application fails to connect to a printer. 이러한 이벤트는 문제를 해결하기 위해 수행할 작업을 사용자에게 알려 주는 적절한 문서나 메시지와 연결됩니다.These events are either well-documented or have a message associated with them that tells the reader what to do to rectify the problem.
OperationalOperational Operational 이벤트는 문제 또는 발생을 분석 및 진단하는 데 사용되며Operational events are used for analyzing and diagnosing a problem or occurrence. 문제 또는 발생을 기반으로 도구 또는 태스크를 트리거하는 데 사용할 수 있습니다.They can be used to trigger tools or tasks based on the problem or occurrence. Operational 이벤트의 예로는 시스템에서 프린터를 추가 또는 제거하는 경우를 들 수 있습니다.An example of an operational event is when a printer is added or removed from a system.
AnalyticAnalytic Analytic 이벤트는 고용량으로 게시됩니다.Analytic events are published in high volume. 이러한 이벤트는 프로그램 작업을 나타내며 일반적으로 성능 검사에 사용됩니다.They describe program operation and are typically used in performance investigations.
디버그Debug Debug 이벤트는 디버깅을 위해 문제를 진단하는 개발자에 의해서만 사용됩니다.Debug events are used solely by developers to diagnose a problem for debugging.

디버그 채널의 이벤트는 내부 구현과 관련된 상태 데이터를 반환합니다.Events in the Debug channel return internal implementation-specific state data. 이벤트가 반환하는 스키마와 데이터는 변경되거나 이후 SQL Server 버전에서 유효하지 않게 될 수 있습니다.The schemas and data that the events return may change or become invalid in future versions of SQL Server. 따라서 이후 버전의 SQL Server에서는 예고 없이 디버그 채널의 이벤트가 변경되거나 제거될 수 있습니다.Therefore, events in the Debug channel may change or be removed in future versions of SQL Server without notice.

키워드Keyword

키워드는 응용 프로그램마다 다르게 사용되며 관련된 이벤트를 보다 세부적으로 그룹화할 수 있으므로 세션에서 사용할 이벤트를 더욱 쉽게 지정하고 가져올 수 있습니다.A keyword is application specific and enables a finer-grained grouping of related events, which makes it easier for you to specify and retrieve an event that you want to use in a session. 다음 쿼리를 사용하여 키워드 정보를 가져올 수 있습니다.You can use the following query to obtain keyword information.

select map_value Keyword from sys.dm_xe_map_values  
where name = 'keyword_map'  

참고

키워드는 SQL 추적 이벤트의 현재 그룹화와 밀접하게 매핑됩니다.Keywords map closely to the current grouping of SQL Trace events.

대상Targets

대상은 이벤트의 소비자입니다.Targets are event consumers. 대상은 이벤트가 발생하는 스레드에서 동기적으로 이벤트를 처리하거나 시스템을 통해 제공되는 스레드에서 비동기적으로 이벤트를 처리합니다.Targets process events, either synchronously on the thread that fires the event or asynchronously on a system provided thread. 확장 이벤트는 이벤트 출력을 전송하는 데 적합하게 사용할 수 있는 여러 대상을 제공합니다.Extended Events provides several targets that you can use as appropriate for directing event output. 자세한 내용은 SQL Server Extended Events Targets을 참조하세요.For more information, see SQL Server Extended Events Targets.

작업Actions

동작은 이벤트에 대한 한 차례 또는 일련의 프로그래밍 방식 응답입니다.An action is a programmatic response or series of responses to an event. 동작은 이벤트에 바인딩되며 각 이벤트에는 일련의 고유한 동작이 있을 수 있습니다.Actions are bound to an event, and each event may have a unique set of actions.

참고

특정 이벤트 집합을 위해 사용되는 동작은 알 수 없는 이벤트에 바인딩할 수 없습니다.Actions that are intended for a specific set of events cannot bind to unknown events.

이벤트에 바인딩된 동작은 이벤트가 발생한 스레드에서 동기적으로 실행됩니다.An action bound to an event is invoked synchronously on the thread that fired the event. 다양한 유형의 동작이 있으며 기능도 다양합니다.There are many types of actions and they have a wide range of capabilities. 동작의 기능은 다음과 같습니다.Actions can:

  • 스택 덤프를 캡처하고 데이터를 검사합니다.Capture a stack dump and inspect data.

  • 변수 저장소를 사용하여 상태 정보를 로컬 컨텍스트로 저장합니다.Store state information in a local context using variable storage.

  • 이벤트 데이터를 집계합니다.Aggregate event data.

  • 이벤트 데이터에 데이터를 추가합니다.Append data to event data.

    일반적이고 잘 알려진 동작의 예를 몇 가지 들면 다음과 같습니다.Some typical and well known examples of actions are:

  • 스택 덤퍼Stack dumper

  • 실행 계획 감지( SQL ServerSQL Server 에만 해당)Execution plan detection ( SQL ServerSQL Server only)

  • Transact-SQLTransact-SQL 스택 컬렉션( SQL ServerSQL Server 에만 해당) only)

  • 런타임 통계 계산Run time statistics calculation

  • 예외 시 사용자 입력 수집Gather user input on exception

조건자Predicates

조건자는 이벤트를 처리할 때 이벤트를 평가하는 데 사용되는 논리적 규칙의 집합입니다.Predicates are a set of logical rules that are used to evaluate events when they are processed. 확장 이벤트 사용자는 조건자를 사용하여 특정 기준에 맞는 이벤트 데이터를 선별적으로 캡처할 수 있습니다.This enables the Extended Events user to selectively capture event data based on specific criteria.

조건자는 데이터를 로컬 컨텍스트에 저장하여 이벤트가 발생하는 n 분 또는 n 번마다 true를 한 번만 반환하는 조건자를 만드는 데 사용할 수 있습니다.Predicates can store data in a local context that can be used for creating predicates that return true once every n minutes or every n times that an event fires. 이 로컬 컨텍스트 저장소를 사용하면 조건자를 동적으로 업데이트함으로써 나중에 발생한 이벤트에 전과 유사한 데이터가 있는 경우 이를 생략하는 데 사용할 수 있습니다.This local context storage can also be used to dynamically update the predicate, thereby suppressing future event firing if the events contain similar data.

조건자는 이벤트별 데이터와 스레드 ID 등의 컨텍스트 정보를 검색할 수 있습니다.Predicates have the ability to retrieve context information, such as the thread ID, as well as event specific data. 조건자는 완전한 부울 식으로 평가될 수 있으며 처음으로 전체 식이 false가 될 때 단락(short circuit)을 지원합니다.Predicates are evaluated as full Boolean expressions, and support short circuiting at the first point where the entire expression is found to be false.

참고

이전 조건자 검사에 실패한 경우 부작용이 있는 조건자는 평가할 수 없습니다.Predicates with side effects may not be evaluated if an earlier predicate check fails.

유형Types

데이터는 연결된 바이트의 집합이므로 데이터를 해석하려면 바이트 집합의 길이 및 특성이 필요합니다.Because data is a collection of bytes strung together, the length and characteristics of the byte collection are required in order to interpret the data. 이 정보는 Type 개체에 캡슐화됩니다.This information is encapsulated in the Type object. 패키지 개체에 제공되는 유형은 다음과 같습니다.The following types are provided for package objects:

Maps

맵 테이블은 내부 값을 문자열에 매핑함으로써 값이 무엇을 나타내는지 사용자에게 알려 줍니다.A map table maps an internal value to a string, which enables a user to know what the value represents. 사용자는 숫자 값뿐만 아니라 내부 값의 의미를 나타내는 설명도 얻을 수 있습니다.Instead of only being able to obtain a numeric value, a user can get a meaningful description of the internal value. 다음 쿼리에서는 맵 값을 가져오는 방법을 보여 줍니다.The following query shows how to obtain map values.

select map_key, map_value from sys.dm_xe_map_values  
where name = 'lock_mode'  

위 쿼리에서 생성되는 출력은 다음과 같습니다.The preceding query produces the following output.

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 RX_X

21 RX_X

이 표의 경우 mode라는 열이 있고 값이 5라고 가정하면Using this table as an example, assume that you have a column named mode, and its value is 5. 표에서 5가 X에 매핑되므로 잠금 유형은 배타입니다.The table indicates that 5 maps to X, which means the lock type is Exclusive.

참고 항목See Also

SQL Server Extended Events Sessions SQL Server Extended Events Sessions
SQL Server 확장 이벤트 엔진 SQL Server Extended Events Engine
SQL Server Extended Events Targets SQL Server Extended Events Targets