Поделиться через


Просмотр эквивалентов расширенных событий для классов событий трассировки SQL

Применимо к:SQL ServerAzure SQL База данныхAzure SQL Управляемый экземплярSQL База данных в Microsoft Fabric

Узнайте, как события трассировки SQL сопоставляют с событиями и действиями расширенных событий. Вы можете собирать данные о событиях, эквивалентные классам событий и столбцам трассировки SQL.

С помощью приведенной ниже процедуры можно просматривать события и действия расширенных событий, аналогичных каждому событию трассировки SQL со связанными столбцами.

Чтобы выполнить команды T-SQL, используйте SQL Server Management Studio (SSMS), расширение MSSQL для Visual Studio Code, sqlcmd или любимое средство запросов T-SQL.

Просмотр эквивалентов расширенных событий событиям трассировки SQL с помощью редактора запросов

  • В редакторе запросов в SQL Server Management Studio выполните следующий запрос:

    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         AS te
        LEFT JOIN sys.trace_xe_event_map   AS em ON te.trace_event_id  = em.trace_event_id
        LEFT JOIN sys.trace_event_bindings AS tb ON em.trace_event_id  = tb.trace_event_id
        LEFT JOIN sys.trace_columns        AS tc ON tb.trace_column_id = tc.trace_column_id
        LEFT JOIN sys.trace_xe_action_map  AS am ON tc.trace_column_id = am.trace_column_id
    ORDER BY te.name, tc.name;
    

Примечание.

  • Если все столбцы возвращаются NULL, кроме столбца Event Class, класс событий не был мигрирован из трассировки SQL.

  • Если только значение в столбце Extended Events action равно NULL, выполняется одно из следующих условий:

    • Элемент SQL Trace column сопоставляется с одним из полей данных, которое связано с событием Extended Events.

    • Каждое событие расширенных событий имеет набор полей данных по умолчанию, автоматически включаемых в результирующий набор.

    • Столбец action не имеет значимого эквивалента расширенных событий. Примером является столбец EventClass в SQL Trace. Этот столбец не нужен в расширенных событиях, поскольку достаточно имени события.

  • Расширенные события используют одно событие для замены пользовательских настраиваемых классов событий трассировки SQL (UserConfigurable:1 через UserConfigurable:9). Событие называется user_event. Это событие вызывается с помощью sp_trace_generateevent, той же хранимой процедуры, которая используется SQL Trace. Событие user_event возвращается независимо от того, какой идентификатор события передается хранимой процедуре. event_id Однако поле возвращается в составе данных события, которые можно использовать для создания предиката на основе идентификатора события. Например, если вы используете UserConfigurable:0 (идентификатор события = 82) в коде, вы можете добавить событие user_event в сеанс и указать предикат event_id = 82. Поэтому вам не нужно изменять код, так как sp_trace_generateevent хранимая процедура создает событие расширенных событий user_event и эквивалентный класс событий трассировки SQL.