CREATE EVENT SESSION(Transact-SQL)CREATE EVENT SESSION (Transact-SQL)

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

이벤트 원본, 이벤트 세션 대상 및 이벤트 세션 옵션을 식별하는 확장 이벤트 세션을 만듭니다.Creates an Extended Events session that identifies the source of the events, the event session targets, and the event session options.

항목 링크 아이콘 TRANSACT-SQL 구문 표기 규칙합니다.Topic link icon Transact-SQL Syntax Conventions.

구문Syntax


CREATE EVENT SESSION event_session_name  
ON SERVER  
{  
    <event_definition> [ ,...n]  
    [ <event_target_definition> [ ,...n] ]  
    [ WITH ( <event_session_options> [ ,...n] ) ]  
}  
;  

<event_definition>::=  
{  
    ADD EVENT [event_module_guid].event_package_name.event_name   
         [ ( {   
                 [ SET { event_customizable_attribute = <value> [ ,...n] } ]  
                 [ ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] } ) ]  
                 [ WHERE <predicate_expression> ]  
        } ) ]  
}  

<predicate_expression> ::=   
{  
    [ NOT ] <predicate_factor> | {( <predicate_expression> ) }   
    [ { AND | OR } [ NOT ] { <predicate_factor> | ( <predicate_expression> ) } ]   
    [ ,...n ]  
}  

<predicate_factor>::=   
{  
    <predicate_leaf> | ( <predicate_expression> )  
}  

<predicate_leaf>::=  
{  
      <predicate_source_declaration> { = | < > | ! = | > | > = | < | < = } <value>   
    | [event_module_guid].event_package_name.predicate_compare_name ( <predicate_source_declaration>, <value> )   
}  

<predicate_source_declaration>::=   
{  
    event_field_name | ( [event_module_guid].event_package_name.predicate_source_name )  
}  

<value>::=   
{  
    number | 'string'  
}  

<event_target_definition>::=  
{  
    ADD TARGET [event_module_guid].event_package_name.target_name  
        [ ( SET { target_parameter_name = <value> [ ,...n] } ) ]  
}  

<event_session_options>::=  
{  
    [    MAX_MEMORY = size [ KB | MB ] ]  
    [ [,] EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS } ]  
    [ [,] MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE } ]  
    [ [,] MAX_EVENT_SIZE = size [ KB | MB ] ]  
    [ [,] MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU } ]  
    [ [,] TRACK_CAUSALITY = { ON | OFF } ]  
    [ [,] STARTUP_STATE = { ON | OFF } ]  
}  

인수Arguments

event_session_nameevent_session_name
이벤트 세션에 대한 사용자 정의 이름입니다.Is the user-defined name for the event session. event_session_name 은 영숫자로 최대 128 자를 사용할 수의 인스턴스 내에서 고유 해야 SQL ServerSQL Server에 대 한 규칙을 준수 해야 식별자합니다.event_session_name is alphanumeric, can be up to 128 characters, must be unique within an instance of SQL ServerSQL Server, and must comply with the rules for Identifiers.

이벤트 추가 [ event_module_guid ]. event_package_name. e n t _ADD EVENT [ event_module_guid ].event_package_name.event_name
이벤트 세션과 연결할 이벤트입니다. 여기서 각 매개 변수의 의미는 다음과 같습니다.Is the event to associate with the event session, where:

  • event_module_guid 이벤트를 포함 하는 모듈에 대 한 GUID입니다.event_module_guid is the GUID for the module that contains the event.

  • event_package_name 작업 개체가 포함 된 패키지입니다.event_package_name is the package that contains the action object.

  • e n t _ 이벤트 개체입니다.event_name is the event object.

    이벤트는 sys.dm_xe_objects 뷰에 object_type 'event'로 표시됩니다.Events appear in the sys.dm_xe_objects view as object_type 'event'.

    설정 { event_customizable_attribute= <값 > [,... n] }SET { event_customizable_attribute= <value> [ ,...n] }
    이벤트의 사용자 지정 가능한 특성을 설정합니다.Allows customizable attributes for the event to be set. 사용자 지정 가능한 특성 표시는 sys.dm_xe_object_columns 뷰에 column_type 'customizable' 및 object_name = e n t _합니다.Customizable attributes appear in the sys.dm_xe_object_columns view as column_type 'customizable ' and object_name = event_name.

    작업 ({[event_module_guid]. event_package_name. action_name [ ,... n] })ACTION ( { [event_module_guid].event_package_name.action_name [ ,...n] })
    이벤트 세션과 연결할 동작입니다. 여기서 각 매개 변수의 의미는 다음과 같습니다.Is the action to associate with the event session, where:

  • event_module_guid 이벤트를 포함 하는 모듈에 대 한 GUID입니다.event_module_guid is the GUID for the module that contains the event.

  • event_package_name 작업 개체가 포함 된 패키지입니다.event_package_name is the package that contains the action object.

  • action_name 작업 개체입니다.action_name is the action object.

    동작은 sys.dm_xe_objects 뷰에 object_type 'action'으로 표시됩니다.Actions appear in the sys.dm_xe_objects view as object_type 'action'.

    여기서 < e x p > 이벤트를 처리 해야 하는 경우를 확인 하는 데 사용 되는 조건자 식을 지정 합니다.WHERE <predicate_expression> Specifies the predicate expression used to determine if an event should be processed. 경우 < e x p >이 true 이면 이벤트 처리 동작과 세션에 대 한 대상에 의해 더 이상.If <predicate_expression> is true, the event is processed further by the actions and targets for the session. 경우 <_ e x p >이 false 이면 이벤트는 세션에 대 한 동작과 대상에서 처리 되기 전에 세션에 의해 삭제 됩니다.If <predicate_expression> is false, the event is dropped by the session before being processed by the actions and targets for the session. 조건자 식은 3000자로 제한되며 문자열 인수를 제한합니다.Predicate expressions are limited to 3000 characters, which limits string arguments.

    event_field_nameevent_field_name
    조건자 원본을 식별하는 이벤트 필드의 이름입니다.Is the name of the event field that identifies the predicate source.

    [event_module_guid]. event_package_name. predicate_source_name[event_module_guid].event_package_name.predicate_source_name
    전역 조건자 원본의 이름입니다. 여기서 각 매개 변수의 의미는 다음과 같습니다.Is the name of the global predicate source where:

  • event_module_guid 이벤트를 포함 하는 모듈에 대 한 GUID입니다.event_module_guid is the GUID for the module that contains the event.

  • event_package_name 조건자 개체가 포함 된 패키지입니다.event_package_name is the package that contains the predicate object.

  • predicate_source_name sys.dm_xe_objects 뷰에서 object_type 'pred_source'로 정의 됩니다.predicate_source_name is defined in the sys.dm_xe_objects view as object_type 'pred_source'.

    [event_module_guid]. event_package_name. predicate_compare_name[event_module_guid].event_package_name.predicate_compare_name
    이벤트와 연결할 조건자 개체의 이름입니다. 여기서 각 매개 변수의 의미는 다음과 같습니다.Is the name of the predicate object to associate with the event, where:

  • event_module_guid 이벤트를 포함 하는 모듈에 대 한 GUID입니다.event_module_guid is the GUID for the module that contains the event.

  • event_package_name 조건자 개체가 포함 된 패키지입니다.event_package_name is the package that contains the predicate object.

  • predicate_compare_name 은 sys.dm_xe_objects 뷰에서 object_type 'pred_compare'로 정의 된 전역 원본입니다.predicate_compare_name is a global source defined in the sys.dm_xe_objects view as object_type 'pred_compare'.

    numbernumber
    임의의 숫자 형식을 포함 한 10 진수합니다.Is any numeric type including decimal. 단, 사용 가능한 실제 메모리가 부족한 경우나 값이 너무 커서 64비트 정수로 표현할 수 없는 숫자는 제외됩니다.Limitations are the lack of available physical memory or a number that is too large to be represented as a 64-bit integer.

    '문자열''string'
    조건자 비교에 필요한 ANSI 또는 유니코드 문자열입니다.Either an ANSI or Unicode string as required by the predicate compare. 조건자 비교 함수에 대해서는 암시적 문자열 유형 변환이 수행되지 않습니다.No implicit string type conversion is performed for the predicate compare functions. 잘못된 유형을 전달하면 오류가 발생합니다.Passing the wrong type results in an error.

    대상 추가 [event_module_guid]. event_package_name. target_nameADD TARGET [event_module_guid].event_package_name.target_name
    이벤트 세션과 연결할 대상입니다. 여기서 각 매개 변수의 의미는 다음과 같습니다.Is the target to associate with the event session, where:

  • event_module_guid 이벤트를 포함 하는 모듈에 대 한 GUID입니다.event_module_guid is the GUID for the module that contains the event.

  • event_package_name 작업 개체가 포함 된 패키지입니다.event_package_name is the package that contains the action object.

  • target_name 대상입니다.target_name is the target. 대상은 sys.dm_xe_objects 뷰에 object_type 'target'으로 표시됩니다.Targets appear in sys.dm_xe_objects view as object_type 'target'.

    설정 { target_parameter_name= <값 > [,... n] }SET { target_parameter_name= <value> [, ...n] }
    대상 매개 변수를 설정합니다.Sets a target parameter. 대상 매개 변수 표시는 sys.dm_xe_object_columns 뷰에 column_type 'customizable' 및 object_name = target_name합니다.Target parameters appear in the sys.dm_xe_object_columns view as column_type 'customizable' and object_name = target_name.

중요

링 버퍼 대상을 사용하는 경우 XML 출력의 데이터 잘림을 피하려면 max_memory 대상 매개 변수를 2048KB로 설정하는 것이 좋습니다.If you are using the ring buffer target, we recommend that you set the max_memory target parameter to 2048 kilobytes (KB) to help avoid possible data truncation of the XML output. 다양 한 대상 유형에 사용 하는 경우에 대 한 자세한 내용은 참조 SQL Server Extended Events Targets합니다.For more information about when to use the different target types, see SQL Server Extended Events Targets.

와 ( <event_session_options > [,... n ]) 이벤트 세션에 사용할 옵션을 지정 합니다.WITH ( <event_session_options> [ ,...n] ) Specifies options to use with the event session.

MAX_MEMORY =크기 [KB | MB ]MAX_MEMORY =size [ KB | MB ]
이벤트 버퍼링을 위해 세션에 할당할 최대 메모리 양을 지정하며Specifies the maximum amount of memory to allocate to the session for event buffering. 기본값은 4MB입니다.The default is 4 MB. 크기 정수 이며 킬로바이트 (KB) 이나 메가바이트 (MB) 값이 될 수 있습니다.size is a whole number and can be a kilobyte (KB) or a megabyte (MB) value.

EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS}EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS }
이벤트 소실을 처리하는 데 사용할 이벤트 보존 모드를 지정합니다.Specifies the event retention mode to use for handling event loss.

ALLOW_SINGLE_EVENT_LOSSALLOW_SINGLE_EVENT_LOSS
한 개의 이벤트가 세션에서 손실될 수 있습니다.An event can be lost from the session. 모든 이벤트 버퍼가 가득 찬 경우 한 개의 이벤트만 삭제됩니다.A single event is only dropped when all the event buffers are full. 이벤트 버퍼가 가득 찬 경우 이벤트 하나가 소실될 수 있도록 하면 SQL ServerSQL Server의 성능에 미치는 영향을 허용 범위 내로 유지하면서도 처리된 이벤트 스트림에서 데이터가 소실되는 것을 최소화할 수 있습니다.Losing a single event when event buffers are full allows for acceptable SQL ServerSQL Server performance characteristics, while minimizing the loss of data in the processed event stream.

ALLOW_MULTIPLE_EVENT_LOSSALLOW_MULTIPLE_EVENT_LOSS
여러 개의 이벤트를 포함하는 가득 찬 이벤트 버퍼가 세션에서 손실될 수 있습니다.Full event buffers containing multiple events can be lost from the session. 손실되는 이벤트 수는 세션에 할당된 메모리 크기, 메모리 분할 및 버퍼에 있는 이벤트의 크기에 따라 달라집니다.The number of events lost is dependant upon the memory size allocated to the session, the partitioning of the memory, and the size of the events in the buffer. 이 옵션은 이벤트 버퍼가 빠른 속도로 채워질 때 서버에 미치는 성능 영향을 최소화하지만 많은 수의 이벤트가 세션에서 손실될 수 있습니다.This option minimizes performance impact on the server when event buffers are quickly filled, but large numbers of events can be lost from the session.

NO_EVENT_LOSSNO_EVENT_LOSS
이벤트 손실이 허용되지 않습니다.No event loss is allowed. 이 옵션을 사용하면 발생한 모든 이벤트가 보존되며,This option ensures that all events raised will be retained. 이벤트 버퍼에 사용 가능한 공간이 생길 때까지 이벤트를 발생시키는 모든 태스크가 대기합니다.Using this option forces all tasks that fire events to wait until space is available in an event buffer. 따라서 이벤트 세션이 활성 상태인 동안에는 성능이 저하될 수 있습니다.This may cause detectable performance issues while the event session is active. 버퍼에서 이벤트가 플러시되기를 기다리는 동안 사용자 연결이 교착 상태에 빠질 수 있습니다.User connections may stall while waiting for events to be flushed from the buffer.

MAX_DISPATCH_LATENCY = { 초 | 무한 }MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE }
이벤트가 이벤트 세션 대상에 디스패치되기 전에 메모리에 버퍼링될 시간을 지정합니다.Specifies the amount of time that events will be buffered in memory before being dispatched to event session targets. 기본적으로 이 값은 30초로 설정됩니다.By default, this value is set to 30 seconds.

seconds SECONDS
버퍼를 대상에 플러시하기 시작할 때까지 대기하는 초 단위 시간입니다.The time, in seconds, to wait before starting to flush buffers to targets. 정수입니다.seconds is a whole number. 최소 대기 시간 값은 1초입니다.The minimum latency value is 1 second. 값으로 0을 사용하면 INFINITE 대기를 지정할 수 있습니다.However, 0 can be used to specify INFINITE latency.

무한INFINITE
버퍼가 가득 차거나 이벤트 세션이 종료된 경우에만 버퍼를 대상에 플러시합니다.Flush buffers to targets only when the buffers are full, or when the event session closes.

참고

MAX_DISPATCH_LATENCY = 0 SECONDS는 MAX_DISPATCH_LATENCY = INFINITE와 같습니다.MAX_DISPATCH_LATENCY = 0 SECONDS is equivalent to MAX_DISPATCH_LATENCY = INFINITE.

MAX_EVENT_SIZE =크기 [KB | MB ]MAX_EVENT_SIZE =size [ KB | MB ]
이벤트에 허용되는 최대 크기를 지정합니다.Specifies the maximum allowable size for events. MAX_EVENT_SIZE는 단일 이벤트가 MAX_MEMORY보다 크도록 설정해야만 합니다. 단일 이벤트가 MAX_MEMORY보다 작을 경우 오류가 발생합니다.MAX_EVENT_SIZE should only be set to allow single events larger than MAX_MEMORY; setting it to less than MAX_MEMORY will raise an error. 크기 정수 이며 킬로바이트 (KB) 이나 메가바이트 (MB) 값이 될 수 있습니다.size is a whole number and can be a kilobyte (KB) or a megabyte (MB) value. 경우 크기 허용 되는 최소 크기는 64KB (킬로바이트)에 지정 됩니다.If size is specified in kilobytes, the minimum allowable size is 64 KB. MAX_EVENT_SIZE가 설정 된 경우,의 두 버퍼가 크기 MAX_MEMORY 외에도 생성 됩니다.When MAX_EVENT_SIZE is set, two buffers of size are created in addition to MAX_MEMORY. 이는 이벤트 버퍼링에 사용되는 총 메모리가 MAX_MEMORY + 2 * MAX_EVENT_SIZE임을 의미합니다.This means that the total memory used for event buffering is MAX_MEMORY + 2 * MAX_EVENT_SIZE.

MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU}MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU }
이벤트 버퍼가 만들어지는 위치를 지정합니다.Specifies the location where event buffers are created.

NONENONE
SQL ServerSQL Server 인스턴스 내에 한 개의 버퍼 집합이 만들어집니다.A single set of buffers are created within the SQL ServerSQL Server instance.

PER_NODEPER_NODE
NUMA 노드당 한 개의 버퍼 집합이 만들어집니다.A set of buffers are created for each NUMA node.

PER_CPUPER_CPU
CPU당 한 개의 버퍼 집합이 만들어집니다.A set of buffers are created for each CPU.

TRACK_CAUSALITY = {ON | OFF }TRACK_CAUSALITY = { ON | OFF }
인과 관계를 추적할지 여부를 지정합니다.Specifies whether or not causality is tracked. 이를 ON으로 설정하면 인과 관계에 따라 다른 서버 연결에 있는 관련 이벤트의 상호 연결이 허용됩니다.If enabled, causality allows related events on different server connections to be correlated together.

STARTUP_STATE = {ON | OFF }STARTUP_STATE = { ON | OFF }
SQL ServerSQL Server가 시작될 때 해당 이벤트 세션을 자동으로 시작할지 여부를 지정합니다.Specifies whether or not to start this event session automatically when SQL ServerSQL Server starts.

참고

STARTUP_STATE = ON이면 SQL Server를 중지했다가 다시 시작한 경우에만 이벤트 세션이 시작됩니다.If STARTUP_STATE = ON, the event session will only start if SQL Server is stopped and then restarted.

ONON
시작 시 이벤트 세션이 시작됩니다.The event session is started at startup.

OFFOFF
시작 시 이벤트 세션이 시작되지 않습니다.The event session is not started at startup.

주의Remarks

논리 연산자의 우선 순위는 NOT(가장 높음), AND, OR 순입니다.The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR.

PermissionsPermissions

ALTER ANY EVENT SESSION 권한이 필요합니다.Requires the ALTER ANY EVENT SESSION permission.

Examples

다음 예에서는 test_session이라는 이벤트 세션을 만드는 방법을 보여 줍니다.The following example shows how to create an event session named test_session. 두 개의 이벤트를 추가하며 Windows용 이벤트 추적 대상을 사용합니다.This example adds two events and uses the Event Tracing for Windows target.

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='test_session')  
    DROP EVENT session test_session ON SERVER;  
GO  
CREATE EVENT SESSION test_session  
ON SERVER  
    ADD EVENT sqlos.async_io_requested,  
    ADD EVENT sqlserver.lock_acquired  
    ADD TARGET package0.etw_classic_sync_target   
        (SET default_etw_session_logfile_path = N'C:\demo\traces\sqletw.etl' )  
    WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);  
GO  

관련 항목:See Also

ALTER EVENT SESSION(Transact-SQL) ALTER EVENT SESSION (Transact-SQL)
DROP EVENT SESSION(Transact-SQL) DROP EVENT SESSION (Transact-SQL)
sys.server_event_sessions( Transact SQL ) sys.server_event_sessions (Transact-SQL)
sys.dm_xe_objects( Transact SQL ) sys.dm_xe_objects (Transact-SQL)
sys.dm_xe_object_columns(Transact-SQL)sys.dm_xe_object_columns (Transact-SQL)