Общие сведения о расширенных событиях

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

Архитектура расширенных событий позволяет пользователям собирать столько или меньше данных, сколько необходимо для устранения или выявления проблем с производительностью в SQL Server, Azure SQL базе данных и Управляемый экземпляр SQL Azure. Расширенные события очень хорошо настраиваемы, легкие и масштабируемые. Дополнительные сведения см. в разделе "Архитектура расширенных событий".

Расширенные события заменяют устаревшие функции трассировки SQL и SQL Server Profiler.

Попробуйте использовать XEvents: краткое руководство. Расширенные события в SQL Server.

Примечание

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

Преимущества расширенной подсистемы событий SQL Server

Расширенные события — это упрощенная система мониторинга производительности, в которой применяется минимальный объем ресурсов. SQL Server Management Studio предоставляет графический пользовательский интерфейс для расширенных событий, позволяющий создавать и изменять сеансы, а также просматривать и анализировать данные сеанса. Дополнительные сведения об этих расширениях см. здесь:

Основные понятия расширенных событий

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

В следующей таблице даны определения понятий, применяемых в расширенной подсистеме событий.

Раздел Описание
Пакеты обработки расширенных событий SQL Server Описывает пакеты расширенных событий, которые содержат объекты. Эти объекты используются для получения и обработки данных во время сеанса расширенных событий.
Цели расширенных событий SQL Server Описывает объекты-получатели событий, получающие данные во время сеанса событий.
Подсистема расширенных событий SQL Server Описывает подсистему, которая реализует сеанс расширенных событий, а также управляет им.
Сеансы расширенных событий SQL Server Описывает сеанс расширенных событий.

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

Расширенные события представляют собой нашу общую систему обработки событий для серверных систем. Инфраструктура расширенных событий поддерживает корреляцию данных из SQL Server и при определенных условиях корреляцию данных из операционных систем и приложений базы данных. В случае с операционной системой выходные данные расширенных событий могут направляться в службу трассировки событий Windows (ETW). Служба ETW может обеспечивать сопоставление данных событий с данными событий операционной системы или приложений.

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

Расширенные события поддерживают использование данных событий вне процесса. Эти данные обычно используются пользователями для администрирования или поддержки продукта путем отслеживания производительности или пользовательской разработки приложений в продукте в целях отладки. Данные потребляются или анализируются с помощью таких средств, как Профилировщик XEvent и Монитор производительности, T-SQL или программы командной строки Windows.

Ключевые аспекты расширенных событий:

  • Подсистема расширенных событий не зависит от событий. Подсистема может привязать любое событие к любой цели, так как не ограничена содержимым события. Дополнительные сведения о подсистеме расширенных событий см. в разделе SQL Server Extended Events Engine.

  • События отделены от объектов-получателей событий, называемых в расширенных событиях целями . Это означает, что любая цель может получать любые события. Кроме того, любое возникающее событие может автоматически потребляться целью, которая регистрирует его и предоставляет дополнительный контекст событий. Дополнительные сведения см. в статье SQL Server Extended Events Targets.

  • События отделены от действий, предпринимаемых при возникновении события. Следовательно, любое действие можно связать с любым событием.

  • Предикаты могут применять динамические фильтры, когда необходимо получить данные события. Динамическая фильтрация делает инфраструктуру расширенных событий более гибкой. Дополнительные сведения см. в разделе SQL Server Extended Events Packages.

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

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

  • Интеграция и поддержка существующих инструментов приложения трассировки событий Windows.

  • Полностью настраиваемый механизм обработки событий, основанный на Transact-SQL.

  • Возможность динамического мониторинга активных процессов с минимальным влиянием на эти процессы.

  • Сеанс работоспособности системы по умолчанию, который выполняется без каких-либо заметных последствий для производительности. В этом сеансе собираются системные данные, которые можно использовать для решения проблем производительности. Дополнительные сведения см. в статье Использование сеанса system_health.

Задачи расширенных событий

Используя Management Studio или Transact-SQL для выполнения инструкций языка определения данных Transact-SQL (DDL), использования динамических административных представлений и функций или представлений каталога, можно создавать простые или сложные SQL Server решения по устранению неполадок расширенных событий для среды SQL Server.

Описание задачи Статья
Обозреватель объектов позволяет управлять сеансами события. Управление сеансами событий в обозревателе объектов
Описано, как создать сеанс расширенных событий. Создание сеанса расширенных событий
Описывает, как просматривать и обновлять целевые данные. Расширенный просмотр целевых данных из расширенных событий в SQL Server
Описывает, как использовать средства расширенных событий для создания сеансов расширенных событий и управления ими SQL Server. Средства расширенных событий
Описано, как изменить сеанс расширенных событий. Изменение сеанса расширенных событий
Описывает, как получить информацию о полях, связанных с событиями. Получение полей для всех событий
Описывает, как узнать, какие события доступны в зарегистрированных пакетах. Просмотр событий для зарегистрированных пакетов
Описывает, как определить, какие цели расширенных событий доступны в зарегистрированных пакетах. Просмотр целей расширенных событий для зарегистрированных пакетов
Описывает, как с помощью приведенной ниже процедуры можно просматривать события и действия расширенных событий, аналогичных каждому событию трассировки SQL со связанными столбцами. Просмотр эквивалентов расширенных событий для классов событий трассировки SQL
Описывает, как выяснить, какие параметры можно задать при использовании аргумента ADD TARGET в инструкции CREATE EVENT SESSION или ALTER EVENT SESSION. Получение настраиваемых параметров для аргумента ADD TARGET
Описано, как преобразовать существующий скрипт приложения трассировки SQL в сеанс расширенных событий. Преобразование существующего скрипта трассировки SQL в сеанс расширенных событий
Описывает, как определить, какие запросы хранят блокировку, план запроса и стек Transact-SQL во время блокировки. Определение запросов, содержащих блокировки
Описывает, как определить источник блокировок, приводящих к ухудшению производительности базы данных. Поиск объектов, на которые наложено наибольшее число блокировок
Описывает, как использовать расширенные события совместно со средством трассировки событий для Windows (ETW) для наблюдения за активностью системы. Мониторинг активности системы с помощью расширенных событий
Использование представлений каталога и динамических административных представлений (DMV) для расширенных событий Использование SELECT и JOIN в системных представлениях для расширенных событий в SQL Server

Используйте следующий запрос Transact-SQL (T-SQL), чтобы вывести список всех возможных событий и их описаний:

SELECT
     obj1.name as [XEvent-name],
     col2.name as [XEvent-column],
     obj1.description as [Descr-name],
     col2.description as [Descr-column]
  FROM
               sys.dm_xe_objects        as obj1
      JOIN sys.dm_xe_object_columns as col2 on col2.object_name = obj1.name
  ORDER BY
    obj1.name,
    col2.name

Примеры кода могут отличаться для базы данных SQL Azure и управляемого экземпляра SQL

В некоторые примеры кода Transact-SQL, написанные для локального сервера SQL Server, необходимо внести небольшие изменения для их выполнения в облаке. Одна категория таких примеров кода включает системные представления, чьи префиксы имен немного различаются в двух системах баз данных:

  • Префиксserver_   -   для SQL Server и управляемого экземпляра SQL Azure
  • Префиксdatabase_   -   для базы данных SQL Azure и управляемого экземпляра SQL

База данных SQL Azure поддерживает только сеансы на уровне базы данных. SQL Server Management Studio (SSMS) полностью поддерживает сеансы на уровне базы данных для Базы данных SQL Azure: узел Расширенные события, содержащий сеансы на уровне базы данных, отображается в каждой базе данных в обозревателе объектов.

Управляемый экземпляр SQL Azure поддерживает как сеансы уровня базы данных, так и сеансы уровня сервера. Для управляемых экземпляров рекомендуется использовать сеансы на уровне сервера. SSMS полностью поддерживает сеансы на уровне сервера для Управляемого экземпляра SQL: узел Расширенные события, содержащий все сеансы на уровне сервера, отображается в папке Управление для каждого управляемого экземпляра в обозревателе объектов.

Примечание

Сеансы на уровне базы данных не отображаются в обозревателе объектов в SSMS для Управляемого экземпляра SQL Azure. Сеансы на уровне базы данных могут запрашиваться и управляться только с помощью Transact-SQL при использовании управляемого экземпляра.

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

Имя из SQL Server Имя в облачной службе
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions

Информация в двух списках в таблице выше актуальна на март 2022 г. Однако содержимое таблицы может устареть, так как оно не обновляется. Чтобы получить точные списки, выполните приведенную ниже инструкцию T-SQL SELECT.

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database\_%' { ESCAPE '\' } OR
         name LIKE 'server\_%' { ESCAPE '\' })
        AND name LIKE '%\_event%' { ESCAPE '\' }
        AND type = 'V'
    ORDER BY name;

См. также раздел

Дальнейшие действия