Пакеты расширенных событий

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

Пакет — это контейнер для объектов расширенных событий в ядро СУБД SQL Server. Например, в любой ядро СУБД, поддерживающей расширенные события, существуют следующие пакеты:

  • package0 — объекты системы расширенных событий. Это пакет по умолчанию.
  • sqlserver— Объекты, связанные с ядро СУБД
  • sqlos — связанные объекты операционной системы SQL (SQLOS).

Примечание.

Пакет SecAudit используется внутренне функцией аудита. Ни один из объектов в этом пакете недоступен с помощью языка определения данных расширенных событий (DDL).

Пакеты определяются по имени, идентификатору GUID и двоичному модулю, содержащему этот пакет. Модуль может быть исполняемым файлом или динамической библиотекой. Дополнительные сведения см. в sys.dm_xe_packages.

Пакет может содержать любые или все перечисленные ниже объекты, которые подробно рассматриваются далее в этой статье:

  • События
  • Цели
  • Действия
  • Типы
  • Предикаты
  • Карты

В сеансе событий могут содержаться объекты из разных пакетов. Дополнительные сведения см. в разделе "Сеансы расширенных событий".

Содержимое пакета

На следующем рисунке показаны объекты, которые могут существовать в пакете.

Diagram that shows the relationship of a module, packages, and objects.

События

События представляют собой точки мониторинга в пути выполнения программы, например SQL Server. При срабатывании события он содержит тот факт, что была достигнута точка интереса, и сведения о состоянии с момента запуска события.

События можно использовать только в целях отслеживания или для запуска действий. Эти действия могут быть синхронными или асинхронными.

Примечание.

Событие не имеет никаких знаний о действиях, которые могут быть активированы в ответ на срабатывание события.

Набор событий в пакете не может измениться после регистрации пакета в расширенных событиях.

Все события имеют версию схемы, которая определяет их содержимое. Эта схема состоит из столбцов событий с определенными типами. Событие конкретного типа должно всегда предоставлять свои данные точно в том порядке, который задан в схеме. Однако целевой объект событий не должен использовать все предоставленные данные.

Классификация событий

При обработке расширенных событий используется модель категоризации событий, подобная отслеживанию событий для Windows (ETW). Для категоризации событий используются два свойства, канал и ключевое слово. Тем самым поддерживается интеграция обработки расширенных событий с ETW и его средствами.

Канал определяет аудиторию для события. Каналы описаны в следующей таблице.

Термин Определение
Администратор Администратор события в основном предназначены для конечных пользователей, администраторов и поддержки. События, найденные в канале Администратор, могут указывать на проблему с хорошо определенным решением, с которым администратор может действовать. Пример события администратора заключается в том, что приложение не удается подключиться. Эти события документируются или имеют сообщение, связанное с ними, которое сообщает читателю, что делать, чтобы исправить проблему.
Операционные События операционного канала используются для анализа и диагностики проблемы или наступления события. Они могут использоваться для запуска инструментальных средств или задач, исходя из проблемы или наступления события.
Аналитические функции События аналитического канала публикуются в больших объемах. Они описывают функционирование программы и обычно используются для изучения производительности.
Debug События отладки используются в основном разработчиками для диагностики проблемы отладки.

События в канале отладки возвращают внутренние данные о состоянии, зависящие от реализации. Схемы и данные, возвращаемые событиями, могут изменяться, становиться недействительными или удаляться в будущих версиях ядро СУБД без уведомления.

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

SELECT map_value AS Keyword
FROM sys.dm_xe_map_values
WHERE name = 'keyword_map';

Цели

Цели являются объектами-получателями событий. Цели обрабатывают события или синхронно в потоке, запускающем событие, или асинхронно в потоке, предоставленном системой. Расширенные события предоставляют несколько целевых типов, которые можно использовать для направления выходных данных событий. Дополнительные сведения см. в разделе "Целевые объекты для расширенных событий".

Предложение используется ADD TARGET для добавления целевых объектов в сеанс событий.

Действия

Действие — это программный ответ или серия ответов на событие. Действия привязаны к событию, и каждое событие может иметь собственный набор действий.

Примечание.

Действия, предназначенные для определенных событий, не могут привязаться к другим событиям.

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

  • Сбор дампа процесса
  • Хранение сведений о состоянии в локальном контексте с помощью хранилища переменных
  • Статистические данные о событиях
  • Добавление данных к данным события

Ниже приведены распространенные примеры использования действий.

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

Предложение используется ACTION для добавления действий в сеанс событий.

Предикаты

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

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

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

Примечание.

Предикаты с побочными эффектами могут не оцениваться, если предыдущий предикат проверка завершается ошибкой.

Предложение используется WHERE для добавления предикатов в сеанс событий.

Типы

В пакете каждый объект расширенных событий имеет тип. Используются следующие типы:

  • action
  • event
  • message
  • pred_compare
  • pred_source
  • target
  • type

Дополнительные сведения см. в sys.dm_xe_objects.

Карты

Таблица соответствий устанавливает соответствие внутреннего значения строке, что дает пользователю возможность узнать, что именно представляет это значение. В результате пользователь может получить значимое описание внутреннего значения, а не числовое значение. В следующем запросе показан способ установки соответствий.

SELECT map_key, map_value
FROM sys.dm_xe_map_values
WHERE name = 'lock_mode';

Предыдущий запрос выдает следующие выходные данные:

map_key map_value
0 NL
1 SCH_S
2 SCH_M
3 S
4 U
5 X
6 IS
7 IU
8 IX
9 SIU
10 SIX
11 UIX
12 BU
13 RS_S
14 RS_U
15 RI_NL
16 RI_S
17 RI_U
18 RI_X
19 RX_S
20 RX_U
21 LAST_MODE

Используя эту таблицу в качестве примера, предположим, что у вас есть столбец с именем lock_mode, а его значение равно 5. Таблица указывает, что сопоставляется с X, что означает, что 5 тип блокировки является монопольным.