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


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

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

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

  • Состояния сеанса. Различные состояния сеанса расширенных событий находятся в том случае, когда CREATE EVENT SESSION выполняются ALTER EVENT SESSION инструкции.

  • Содержимое и характеристики сеанса. Содержимое сеанса расширенных событий, таких как целевые объекты и события, и как эти объекты связаны в сеансе или между сеансами.

Состояния сеанса

На следующем рисунке показаны различные состояния сеанса расширенных событий.

Схема с состоянием сеанса расширенных событий.

На приведенном выше рисунке обратите внимание, что состояние сеанса изменяется в виде различных команд языка определения данных (DDL) для сеанса событий. В следующей таблице описаны эти изменения состояния.

Метка рисунка Инструкция DDL Description
Create CREATE EVENT SESSION Процесс узла создает объект сеанса, содержащий метаданные, предоставляемые CREATE EVENT SESSION. Процесс узла проверяет определение сеанса, проверяет уровень разрешений пользователя и сохраняет метаданные в master базе данных. На этом этапе сеанс не активен.
Alter ALTER EVENT SESSION, STATE=START Процесс запускает сеанс. Процесс считывает сохраненные метаданные, проверяет определение сеанса, уровень разрешений пользователя и создает сеанс. Загружаются такие объекты сеанса, как события и цели, и сеанс становится активным.
Alter ALTER EVENT SESSION, STATE=STOP Процесс останавливает активный сеанс, но сохраняет метаданные.
Drop DROP EVENT SESSION В зависимости от того, является ли сеанс активным, drop (DROP SESSION) удаляет метаданные и закрывает активный сеанс или удаляет метаданные сеанса.

Содержимое сеанса и характеристики

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

На следующем рисунке показано содержимое сеанса и связь между пакетами и сеансами.

Схема сосуществования объектов и совместного использования в сеансах.

Обратите внимание на предыдущий рисунок, имейте в виду следующее:

  • Сопоставление между объектами пакета и сеансами много ко многим, что означает, что объект определенного типа может отображаться в нескольких сеансах, а сеанс может содержать несколько объектов.
  • Одно и то же событие (событие 1) или целевой тип (target 1) можно использовать в нескольких сеансах.

Сеансы имеют следующие характеристики.

  • Действия и предикаты привязаны к событиям по сеансам. Если у вас есть событие 1 в сеансе A с действием 1 и предикатом Z, это не влияет на событие 1 в сеансе B с действием 2 и действием 3 без предиката.
  • Политики прикрепляются к сеансам для обработки буферизации и диспетчеризации, а также для отслеживания причинно-следственных связей.

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

Отслеживание причин отслеживает работу в нескольких задачах. Если включено отслеживание причинно-следственных связей, каждое запущенное событие получает уникальный в системе идентификатор активности. Идентификатор активности является сочетанием значения идентификатора GUID, который остается неизменным для всех операций в задаче, и порядкового номера, возрастающего при каждом запуске события. Если одна задача вызывает действия в другой задаче, родительский идентификатор активности сообщается дочерней задаче. Дочерняя задача регистрирует родительский идентификатор активности при первом запуске события.

Сеансы событий с привязкой к времени

Начиная с SQL Server 2025 (17.x), можно создать сеанс событий, который останавливается автоматически после истечения указанного времени. Это помогает избежать ситуаций, когда сеансы могут выполняться неограниченное время по ошибке, потребляя ресурсы и потенциально создавая большой объем данных.

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

Чтобы сделать интервал времени сеанса событий, укажите MAX_DURATION аргумент при создании или изменении сеанса. Дополнительные сведения см. в разделе CREATE EVENT SESSION и ALTER EVENT SESSION.

Как и любой сеанс событий, можно остановить сеанс с привязкой к времени до истечения максимального срока действия с помощью инструкции ALTER EVENT SESSION ... STATE = STOP . Если сеанс запускается снова, весь период времени, указанный в MAX_DURATION запросе, должен снова пройти, прежде чем сеанс будет остановлен автоматически.

Вы также можете изменить существующий сеанс событий с помощью и ALTER EVENT SESSION указать другое максимальное время длительности или удалить его, указав MAX_DURATION = UNLIMITEDего. Чтобы изменить MAX_DURATION параметр, сеанс должен быть остановлен.

Если сеанс событий привязан к времени, max_duration столбец в представлении каталога sys.server_event_sessions показывает максимальную длительность сеанса в секундах. Сеанс событий имеет неограниченное время, если значение равно нулю.