확장 이벤트를 사용하여 시스템 작업 모니터링

적용 대상:SQL ServerAzure SQL Database

이 절차에서는 ETW(Windows용 이벤트 추적)와 함께 확장 이벤트를 사용하여 시스템 활동을 모니터링하는 방법을 보여 줍니다. 또한 이 절차에서는 CREATE EVENT SESSION, ALTER EVENT SESSION 및 DROP EVENT SESSION 문을 사용하는 방법을 보여 줍니다.

이러한 작업을 수행하려면 SQL Server Management Studio에서 쿼리 편집기를 사용하여 다음 절차를 수행합니다. 또한 이 절차를 수행하려면 명령 프롬프트를 사용하여 ETW 명령을 실행해야 합니다.

확장 이벤트를 사용하여 시스템 활동을 모니터링하려면

  1. 쿼리 편집기에서 다음 문을 실행하여 이벤트 세션을 만들고 두 개의 이벤트를 추가합니다. checkpoint_begin 및 checkpoint_end 이러한 이벤트는 데이터베이스 검사점의 시작과 끝에서 발생합니다.

    CREATE EVENT SESSION test0  
    ON SERVER  
    ADD EVENT sqlserver.checkpoint_begin,  
    ADD EVENT sqlserver.checkpoint_end  
    WITH (MAX_DISPATCH_LATENCY = 1 SECONDS)  
    go  
    
  2. 버킷이 32개인 버킷팅 대상을 추가하여 데이터베이스 ID를 기준으로 검사점 수를 계산합니다.

    ALTER EVENT SESSION test0  
    ON SERVER  
    ADD TARGET package0.histogram  
    (  
          SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id'  
    )  
    go  
    
  3. ETW 대상을 추가하려면 다음 문을 실행합니다. 이렇게 하면 검사점이 걸리는 시간을 결정하는 데 사용되는 시작 및 종료 이벤트를 볼 수 있습니다.

    ALTER EVENT SESSION test0  
    ON SERVER  
    ADD TARGET package0.etw_classic_sync_target  
    go  
    
  4. 다음 문을 실행하여 세션을 시작하고 이벤트 컬렉션을 시작합니다.

    ALTER EVENT SESSION test0  
    ON SERVER  
    STATE = start  
    go  
    
  5. 다음 문을 실행하여 세 이벤트를 실행합니다.

    USE tempdb  
          checkpoint  
    go  
    USE master  
          checkpoint  
          checkpoint  
    go  
    
  6. 다음 문을 실행하여 이벤트 수를 확인합니다.

    SELECT CAST(xest.target_data AS xml) Bucketizer_Target_Data_in_XML  
    FROM sys.dm_xe_session_targets xest  
    JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address  
    JOIN sys.server_event_sessions ses ON xes.name = ses.name  
    WHERE xest.target_name = 'histogram' AND xes.name = 'test0'  
    go  
    
  7. 명령 프롬프트에서 다음 명령을 실행하여 ETW 데이터를 봅니다.

    참고 항목

    tracerpt 명령에 대한 도움말을 보려면 명령 프롬프트에서 .를 입력합니다tracerpt /?.

    logman query -ets --- List the ETW sessions. This is optional.  
    logman update XE_DEFAULT_ETW_SESSION -fd -ets --- Flush the ETW log.  
    tracerpt %temp%\xeetw.etl -o xeetw.txt --- Dump the events so they can be seen.  
    
  8. 다음 문을 실행하여 이벤트 세션을 중지하고 서버에서 제거합니다.

    ALTER EVENT SESSION test0  
    ON SERVER  
    STATE = STOP  
    go  
    
    DROP EVENT SESSION test0  
    ON SERVER  
    go  
    

참고 항목

CREATE EVENT SESSION(Transact-SQL)
ALTER EVENT SESSION(Transact-SQL)
DROP EVENT SESSION(Transact-SQL)
확장 이벤트 카탈로그 뷰(Transact-SQL)
확장 이벤트 동적 관리 뷰
SQL Server 확장 이벤트 대상