SQL 추적 이벤트 클래스에 해당하는 확장 이벤트 보기

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

확장 이벤트를 사용하여 SQL Trace 이벤트 클래스 및 열과 동일한 이벤트 데이터를 수집하려는 경우 SQL 추적 이벤트가 확장 이벤트 이벤트 및 작업에 매핑되는 방식을 이해하는 것이 유용합니다.

다음 절차에 따라 각 SQL 추적 이벤트 및 관련 열에 해당하는 확장 이벤트의 이벤트 및 동작을 확인할 수 있습니다.

쿼리 편집기를 사용하여 SQL 추적 이벤트에 해당하는 확장 이벤트를 보려면

  • SQL Server Management Studio의 쿼리 편집기에서 다음 쿼리를 실행합니다.

    USE MASTER;
    GO
    SELECT DISTINCT
        tb.trace_event_id,
        te.name            AS 'Event Class',
        em.package_name    AS 'Package',
        em.xe_event_name   AS 'XEvent Name',
        tb.trace_column_id,
        tc.name            AS 'SQL Trace Column',
        am.xe_action_name  AS 'Extended Events action'
    FROM
                  sys.trace_events         te
        LEFT JOIN sys.trace_xe_event_map   em ON te.trace_event_id  = em.trace_event_id
        LEFT JOIN sys.trace_event_bindings tb ON em.trace_event_id  = tb.trace_event_id
        LEFT JOIN sys.trace_columns        tc ON tb.trace_column_id = tc.trace_column_id
        LEFT JOIN sys.trace_xe_action_map  am ON tc.trace_column_id = am.trace_column_id
    ORDER BY te.name, tc.name
    

결과를 볼 때 다음 사항에 유의하세요.

  • 이벤트 클래스 열을 제외한 모든 열이 NULL을 반환하면 이벤트 클래스가 SQL Trace에서 마이그레이션되지 않음을 나타냅니다.

  • 확장 이벤트 작업 열의 값만 NULL이면 다음 조건 중 하나가 true임을 나타냅니다.

    • SQL 추적 열은 확장 이벤트 이벤트와 연결된 데이터 필드 중 하나에 매핑됩니다.

      참고 항목

      각 확장 이벤트 이벤트에는 결과 집합에 자동으로 포함되는 기본 데이터 필드 집합이 있습니다.

    • 작업 열에 해당하는 의미 있는 확장 이벤트가 없습니다. 예를 들어 SQL 추적의 EventClass 열이 이러한 경우에 해당합니다. 이벤트 이름이 동일한 용도로 사용되므로 이 열은 확장 이벤트에 필요하지 않습니다.

  • 사용자가 구성할 수 있는 SQL 추적 이벤트 클래스(UserConfigurable:1 ~ UserConfigurable:9)의 경우 확장 이벤트에서는 단일 이벤트를 사용하여 이러한 이벤트 클래스를 대체합니다. 이 이벤트의 이름은 user_event입니다. 이 이벤트는 SQL Trace에서 사용하는 것과 동일한 저장 프로시저인 sp_trace_generateevent 사용하여 발생합니다. user_event 이벤트는 저장 프로시저에 전달되는 이벤트 ID에 관계없이 반환됩니다. 그러나 event_id 필드는 이벤트 데이터의 일부로 반환됩니다. 이 필드를 사용하여 이벤트 ID를 기반으로 하는 조건자를 만들 수 있습니다. 예를 들어 UserConfigurable:0을 사용하는 경우 (이벤트 ID = 82) 코드에서 세션에 user_event 이벤트를 추가하고 'event_id = 82'의 조건자를 지정할 수 있습니다. 그에 따라 sp_trace_generateevent 저장 프로시저에서 확장 이벤트의 user_event 이벤트와 해당하는 SQL 추적 이벤트 클래스를 생성하므로 코드를 변경할 필요가 없습니다.

참고 항목

sp_trace_generateevent(Transact-SQL)