Windows용 이벤트 추적 대상Event Tracing for Windows Target

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

ETW(Windows용 이벤트 추적)를 대상으로 사용하려면 먼저 ETW에 대한 실무 지식을 갖추고 있는 것이 좋습니다.Before you use Event Tracing for Windows (ETW) as a target, we recommend that you have a working knowledge of ETW. ETW 추적은 확장 이벤트와 함께 사용되거나 확장 이벤트의 이벤트 소비자로 사용됩니다.ETW tracing is either used together with Extended Events or as an Extended Events event consumer. 다음 외부 링크를 클릭하면 ETW에 대한 배경 지식을 제공하는 항목으로 연결됩니다.The following external links provide a starting point for obtaining background information about ETW:

  • Windows 이벤트Windows Events

  • ETW를 사용한 디버깅 및 성능 조정 개선Improve Debugging And Performance Tuning With ETW

    ETW 대상을 여러 세션에 추가할 수 있지만 이는 단일 대상입니다.The ETW target is a singleton target, although the target can be added to many sessions. 한 이벤트가 여러 세션에서 발생하는 경우 해당 이벤트는 발생 항목당 한 번만 ETW 대상으로 전파됩니다.If an event is raised on many sessions, the event will only be propagated to the ETW target one time per event occurrence. 확장 이벤트 엔진은 프로세스당 하나의 인스턴스로 제한됩니다.The Extended Events engine is limited to a single instance per process.

중요

ETW 대상이 작동하려면 SQL ServerSQL Server 서비스 시작 계정이 Performance Log Users 그룹의 멤버여야 합니다.For the ETW target to work, the SQL ServerSQL Server Service startup account must be a member of the Performance Log Users group.

ETW 세션에 있는 이벤트의 구성은 확장 이벤트 엔진을 호스팅하는 프로세스에서 제어합니다.The configuration of the events present in an ETW session is controlled by the process that hosts the Extended Events engine. 엔진은 발생할 이벤트 및 이벤트 실행을 위해 충족해야 할 조건을 제어합니다.The engine controls which events to raise and what conditions must be met for an event to occur.

ETW 대상이 프로세스의 수명이 유지되는 동안 처음으로 확장 이벤트 세션에 연결하여 바인딩되면 ETW 대상은 SQL ServerSQL Server 공급자에서 단일 ETW 세션을 엽니다.After binding to an Extended Events session, which attaches the ETW target for the first time during the lifetime of a process, the ETW target opens a single ETW session on the SQL ServerSQL Server provider. ETW 세션이 이미 있으면 ETW 대상은 기존 세션에 대한 참조를 얻습니다.If an ETW session already exists, the ETW target obtains a reference to the existing session. 이러한 ETW 세션은 지정된 컴퓨터의 모든 SQL ServerSQL Server 인스턴스 전체에서 공유할 수 있습니다.This ETW session is shared across all SQL ServerSQL Server instances on a given computer. 또한 이 ETW 세션은 ETW 대상이 있는 세션의 모든 이벤트를 수신합니다.This ETW session receives all the events from sessions that have the ETW target.

ETW 대상이 이벤트를 소비하고 이를 ETW로 전송하려면 공급자가 필요하므로 세션에는 모든 확장 이벤트 패키지가 활성화됩니다.Because ETW needs providers to be enabled to consume events and flow them down to the ETW, all Extended Events packages are enabled on the session. 이벤트가 발생하면 ETW 대상은 이벤트에 대한 공급자가 활성화되어 있는 세션에 이벤트를 전송합니다.When an event is fired, the ETW target sends the event to the session on which the provider for the event is enabled.

ETW 대상은 이벤트를 발생시키는 스레드에서의 이벤트 동기 게시를 지원합니다.The ETW target supports synchronous publishing of events on the thread that raises the event. 하지만 ETW 대상은 비동기 이벤트 게시를 지원하지 않습니다.However, the ETW target does not support asynchronous event publishing.

ETW 대상은 Logman.exe와 같은 외부 ETW 컨트롤러를 제어하지 않습니다.The ETW target does not support control from external ETW controllers such as Logman.exe. ETW 추적을 생성하려면 ETW 대상으로 이벤트 세션을 만들어야 합니다.To produce ETW traces, an event session must be created with the ETW target. 자세한 내용은 CREATE EVENT SESSION(Transact-SQL)을 참조하세요.For more information, see CREATE EVENT SESSION (Transact-SQL).

참고

ETW 대상을 활성화하면 이름이 XE_DEFAULT_ETW_SESSION인 ETW 세션이 생성됩니다.Enabling the ETW target creates an ETW session that is named XE_DEFAULT_ETW_SESSION. XE_DEFAULT_ETW_SESSION이라는 세션이 이미 있는 경우에는 기존 세션이 속성 수정 없이 그대로 사용됩니다.If a session with the name XE_DEFAULT_ETW_SESSION already exists, it is used without modifying any properties of the existing session. XE_DEFAULT_ETW_SESSION은 SQL ServerSQL Server의 모든 인스턴스 간에 공유됩니다.The XE_DEFAULT_ETW_SESSION is shared between all instances of SQL ServerSQL Server. XE_DEFAULT_ETW_SESSION을 시작한 후에는 ETW 컨트롤러(예: Logman 도구)를 사용하여 중지해야 합니다.After you start the XE_DEFAULT_ETW_SESSION, you must stop it by using an ETW controller, such as the Logman tool. 예를 들어 명령 프롬프트에서 logman stop XE_DEFAULT_ETW_SESSION -ets명령을 실행할 수 있습니다.For example, you can run the following command at the command prompt: logman stop XE_DEFAULT_ETW_SESSION -ets.

다음 표에서는 ETW 대상을 구성하는 데 사용할 수 있는 옵션에 대해 설명합니다.The following table describes the available options for configuring the ETW target.

옵션Option 허용된 값Allowed values 설명Description
default_xe_session_namedefault_xe_session_name 최대 256자까지의 모든 문자열.Any string up to 256 characters. 이 값은 선택 사항입니다.This value is optional. 확장 이벤트 세션 이름입니다.The Extended Events session name. 기본적으로 이 이름은 XE_DEFAULT_ETW_SESSION입니다.By default, this is XE_DEFAULT_ETW_SESSION.
default_etw_session_logfile_pathdefault_etw_session_logfile_path 최대 256자까지의 모든 문자열.Any string up to 256 characters. 이 값은 선택 사항입니다.This value is optional. 확장 이벤트 세션의 로그 파일에 대한 경로입니다.The path of the log file for the Extended Events session. 기본적으로 이 경로는 %TEMP%\ XEEtw.etl입니다.By default, this is %TEMP%\ XEEtw.etl.
default_etw_session_logfile_size_mbdefault_etw_session_logfile_size_mb 부호 없는 정수Any unsigned integer. 이 값은 선택 사항입니다.This value is optional. 확장 이벤트 세션의 로그 파일 크기(MB)입니다.The log file size, in megabytes (MB), for the Extended Events session. 기본값은 20MB입니다.The default is 20 MB.
default_etw_session_buffer_size_kbdefault_etw_session_buffer_size_kb 부호 없는 정수Any unsigned integer. 이 값은 선택 사항입니다.This value is optional. 확장 이벤트 세션의 메모리 내 버퍼 크기(KB)입니다.The in-memory buffer size, in kilobytes (KB), for the Extended Events session. 기본값은 128KB입니다.The default is 128 KB.
retriesretries 부호 없는 정수Any unsigned integer. 이벤트가 삭제되기 전에 ETW 하위 시스템에 이벤트 게시를 재시도한 횟수입니다.The number of times to retry publishing the event to the ETW subsystem before dropping the event. 기본값은 0입니다.The default is 0.

이러한 설정의 구성은 선택 사항입니다.Configuring these settings is optional. ETW 대상은 이러한 설정에 대해 기본값을 사용합니다.The ETW target uses default values for these settings.

ETW 대상의 역할은 다음과 같습니다.The ETW target is responsible for:

  • 기본 ETW 세션을 생성합니다.Creating the default ETW session.

  • ETW로 모든 확장 이벤트 패키지를 등록합니다.Registering all Extended Events packages with ETW. 이렇게 하면 이벤트가 ETW에 의해 삭제되지 않습니다.This ensures that events are not dropped by ETW.

  • ETW로의 이벤트 흐름을 관리합니다.Managing the flow of events to ETW. ETW 대상은 확장 이벤트 데이터를 사용하여 ETW 이벤트를 만들고 적절한 ETW 세션에 전송합니다.The ETW target creates an ETW event with Extended Events data and sends it to the appropriate ETW session. 이벤트가 버퍼 크기보다 크거나 데이터가 ETW 이벤트에 맞지 않는 경우 ETW는 이벤트를 조각으로 분할합니다.If the event is larger than the buffer size, or data cannot fit in one ETW event, ETW splits the event into fragments.

  • 확장 이벤트 패키지를 항상 활성화된 상태로 유지합니다.Keeping Extended Events packages enabled at all times.

    ETW에서 사용하는 기본 파일 위치는 다음과 같습니다.The following default file locations are used by ETW:

  • ETW 출력 파일은 %TEMP%\XEEtw.etl에 저장됩니다.The ETW output file is in %TEMP%\XEEtw.etl.

    중요

    첫 번째 세션이 시작되면 파일 경로를 변경할 수 없습니다.The file path cannot be changed after the first session starts.

  • MOF(Managed Object Format) 파일은 <설치 경로\Microsoft SQL Server\Shared에 있습니다.Managed Object Format (MOF) files are in <your install path>\Microsoft SQL Server\Shared. 자세한 내용은 MSDN의 Managed Object Format 을 참조하십시오.For more information, see Managed Object Format on MSDN.

세션에 대상 추가Adding the Target to a Session

확장 이벤트 세션에 ETW 대상을 추가하려면 이벤트 세션을 만들거나 변경할 때 다음 문을 포함해야 합니다.To add the ETW target to an Extended Events session, you must include the following statement when you create or alter an event session:

ADD TARGET package0.etw_classic_sync_target  

데이터를 보는 방법을 비롯한 ETW 대상을 사용하는 방법을 보여 주는 전체 예에 대한 자세한 내용은 확장 이벤트를 사용하여 시스템 작업 모니터링을 참조하세요.For more information about a full example that shows how to use the ETW target, including how to view the data, see Monitor System Activity Using Extended Events.

참고 항목See Also

SQL Server 확장 이벤트 대상 SQL Server Extended Events Targets
sys.dm_xe_session_targets(Transact-SQL) sys.dm_xe_session_targets (Transact-SQL)
CREATE EVENT SESSION(Transact-SQL) CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION(Transact-SQL)ALTER EVENT SESSION (Transact-SQL)