Просмотр эквивалентов расширенных событий для классов событий трассировки SQL
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Если требуется с помощью расширенных событий выполнять сбор данных о событиях, эквивалентных классам и столбцам событий трассировки SQL, желательно иметь представление о том, как события 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.
Если единственным значением, содержащимся в столбце действий расширенных событий, является NULL, значит, выполняется одно из следующих условий.
Столбец трассировки SQL сопоставлен с одним из полей данных, связанных с событием расширенных событий.
Примечание.
Каждое событие расширенных событий имеет набор полей данных по умолчанию, автоматически включаемых в результирующий набор.
Столбец действий не имеет эквивалента в расширенных событиях. Примером этого является столбец класса событий в трассировке SQL. Этот столбец не нужен в расширенных событиях, поскольку достаточно имени события.
Что касается настраиваемых пользователем классов событий трассировки SQL (с UserConfigurable:1 по UserConfigurable:9), в расширенных событиях вместо них используется одно событие. Имя события — user_event. Это событие вызывается с помощью хранимой процедуры sp_trace_generateevent, которая используется и в трассировке SQL. Событие user_event возвращается независимо от того, какой идентификатор события передается хранимой процедуре. Однако поле event_id возвращается вместе с другими данными о событии. Это позволяет составлять предикат на основе идентификатора события. Например, если в коде используется UserConfigurable:0 (идентификатор события = 82), то можно добавить событие user_event в сеанс и указать предикат "event_id = 82". Таким образом, нет необходимости менять код, поскольку хранимая процедура sp_trace_generateevent формирует событие расширенных событий user_event и эквивалентный класс событий трассировки SQL.