Расширенные события в База данных SQL Azure и Управляемый экземпляр SQL Azure

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

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

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

  • Целевой event_file объект всегда использует большие двоичные объекты в служба хранилища Azure, а не файлы на диске.
  • В База данных SQL Azure сеансы событий всегда область базы данных. Это означает, что:
    • Сеанс событий в одной базе данных не может собирать события из другой базы данных.
    • Событие должно происходить в контексте пользовательской базы данных, включаемой в сеанс.
  • В Управляемый экземпляр SQL Azure можно создавать сеансы событий, область область-область сервера. Рекомендуется использовать сеансы событий область сервера для большинства сценариев.

Начать

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

  • Создайте сеанс с целевым объектом event_file в служба хранилища Azure. В этом примере показано, как записывать данные о событиях в файле (BLOB-объект) в служба хранилища Azure с помощью целевого event_file объекта. Используйте это, если вам нужно сохранить сохраненные данные о событиях или использовать средство просмотра событий в SQL Server Management Studio (SSMS) для анализа захваченных данных.
  • Создайте сеанс с целевым объектом ring_buffer в памяти. В этом примере показано, как записать последние события из сеанса событий в памяти с помощью целевого ring_buffer объекта. Используйте это как быстрый способ просмотреть последние события во время нерегламентированных расследований или устранения неполадок, не сохраняя собранные данные о событиях.

Расширенные события можно использовать для мониторинга реплика только для чтения. Дополнительные сведения см. в статье "Чтение запросов на реплика".

Рекомендации

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

  • Если вы используете целевой event_file объект:
    • Не устанавливайте EVENT_RETENTION_MODE для параметра NO_EVENT_LOSSзначение . Это может привести к задержкам времени ожидания подключения и отработки отказа среди других проблем, влияющих на доступность базы данных или управляемого экземпляра.
    • Используйте учетную запись хранения в том же регионе Azure, что и база данных или управляемый экземпляр, где создается сеансы событий.
    • Выравнивание избыточности учетной записи хранения с избыточностью базы данных, эластичного пула или управляемого экземпляра. Для локальных избыточных ресурсов используйте LRS, GRS или RA-GRS. Для ресурсов, избыточных между зонами, используйте ZRS, GZRS или RA-GZRS. Дополнительные сведения см. в служба хранилища Azure избыточности.
    • Не используйте уровень доступа к BLOB-объектам, кроме Hot.
  • Если вы хотите создать непрерывно выполняющийся сеанс событий, который запускается автоматически после каждой ядро СУБД перезапуска (например, после отработки отказа или события обслуживания), включите параметр STARTUP_STATE = ON сеанса событий в инструкции или ALTER EVENT SESSION инструкцииCREATE EVENT SESSION.
  • И наоборот, используется STARTUP_STATE = OFF для краткосрочных сеансов событий, таких как те, которые используются в нерегламентированном устранении неполадок.
  • В База данных SQL Azure не считывайте события взаимоблокировки из встроенного сеанса dl событий. Если собрано большое количество событий взаимоблокировки, считывание их с помощью функции sys.fn_xe_file_target_read_file() может вызвать ошибку вне памяти в master базе данных. Это может повлиять на обработку входа и привести к сбою приложения. Рекомендуемые способы отслеживания взаимоблокировок см. в разделе "Сбор графов взаимоблокировок" в База данных SQL Azure с расширенными событиями.

Целевые объекты сеанса событий

База данных SQL Azure и Управляемый экземпляр SQL Azure поддерживают следующие целевые объекты:

  • event_file целевой объект. Записывает полные буферы в большой двоичный объект в контейнере служба хранилища Azure.
  • ring_buffer целевой объект. Хранит данные событий в памяти до тех пор, пока не замените новые данные события.
  • целевой объект event_counter. Подсчитывает все события, происходящие во время сеанса расширенных событий.
  • цель гистограммы . Подсчитывает вхождения различных значений полей или действий в отдельных контейнерах.
  • event_stream. Потоки данные событий в приложение .Net.

Примечание.

Целевой event_stream объект в База данных SQL Azure и Управляемый экземпляр SQL Azure находится в предварительной версии.

Отличия Transact-SQL

При выполнении инструкций CREATE EVENT SESSION, ALTER EVENT SESSION и DROP EVENT SESSION в SQL Server и в Управляемый экземпляр SQL Azure используется ON SERVER предложение. В База данных SQL Azure вместо этого используется ON DATABASE предложение, так как в сеансах событий База данных SQL Azure область базы данных.

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

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

Имя представления каталога Description
sys.database_event_session_actions Возвращает строку для каждого действия над каждым событием из сеанса событий.
sys.database_event_session_events Возвращает строку для каждого события в сеансе событий.
sys.database_event_session_fields Возвращает строку для каждого настраиваемого столбца, который можно прямо задавать для событий и целевых объектов.
sys.database_event_session_targets Возвращает строку для каждой цели события для сеанса событий.
sys.database_event_sessions Возвращает строку для каждого сеанса событий в базе данных.

Динамические административные представления расширенных событий

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

Имя DMV Description
sys.dm_xe_database_session_event_actions Возвращает сведения о действиях сеанса событий.
sys.dm_xe_database_session_events Возвращает сведения о событиях сеанса.
sys.dm_xe_database_session_object_columns Отображает значения конфигурации объектов, привязанных к сеансу.
sys.dm_xe_database_session_targets Возвращает сведения о целевых объектах сеанса.
sys.dm_xe_database_sessions Возвращает строку для каждого сеанса событий, выполняемого в текущей базе данных.

Общие динамические административные представления

Существуют дополнительные динамические административные представления расширенных событий, которые являются общими для База данных SQL Azure, Управляемый экземпляр SQL Azure и SQL Server:

Доступные события, действия и целевые объекты

Как и в SQL Server, можно получить доступные события, действия и целевые объекты с помощью этого запроса:

SELECT o.object_type,
       p.name AS package_name,
       o.name AS db_object_name,
       o.description AS db_obj_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE o.object_type IN ('action','event','target')
ORDER BY o.object_type,
         p.name,
         o.name;

Разрешения

В База данных SQL Azure и Управляемый экземпляр SQL Azure расширенные события поддерживают детальную модель разрешений. Можно предоставить следующие разрешения:

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

Дополнительные сведения о каждом из этих элементов управления разрешениями см. в разделе CREATE EVENT SESSION, ALTER EVENT SESSION и DROP EVENT SESSION.

Все эти разрешения включены в CONTROL разрешение на базу данных или управляемый экземпляр. В База данных SQL Azure владелец базы данных (dbo), члены db_owner роли базы данных и администраторы логического сервера удерживают разрешение на базу данныхCONTROL. В Управляемый экземпляр SQL Azure члены sysadmin роли сервера содержат CONTROL разрешение на экземпляр.

служба хранилища авторизация контейнера и управление

При использовании целевого event_file объекта данные событий хранятся в больших двоичных объектах в контейнере служба хранилища Azure. Ядро СУБД запуска сеанса событий должен иметь конкретный доступ к этому контейнеру. Этот доступ предоставляется путем создания маркераSAS для контейнера и хранения маркера в учетных данных.

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

Маркер SAS, создаваемый для контейнера служба хранилища Azure, должен соответствовать следующим требованиям:

  • rwl У вас есть разрешения (Read, Write, List) .
  • Время начала и срок действия, охватывающие время существования сеанса событий.
  • Нет ограничений IP-адресов.

Управление ресурсами

В База данных SQL Azure потребление памяти расширенными сеансами событий динамически контролируется ядро СУБД для минимизации проблем ресурсов.

Существует ограничение на память, доступную для сеансов событий:

  • В одной базе данных общий объем памяти сеанса ограничен 128 МБ.
  • В эластичном пуле отдельные базы данных ограничены ограничениями одной базы данных, и в общей сложности они не могут превышать 512 МБ.

Если вы получаете сообщение об ошибке, ссылающееся на ограничение памяти, можно выполнить следующие действия:

  • уменьшить количество одновременно запущенных сеансов событий;
  • Использование CREATE и ALTER инструкции для сеансов событий сокращают объем памяти, указанной MAX_MEMORY в предложении для сеанса.

Примечание.

В расширенных событиях MAX_MEMORY предложение отображается в двух контекстах: при создании или изменении сеанса (на уровне сеанса) и при использовании ring_buffer целевого объекта (на целевом уровне). Указанные выше ограничения применяются к памяти уровня сеанса.

В База данных SQL Azure существует ограничение на количество запущенных сеансов событий:

  • В одной базе данных ограничение равно 100.
  • В эластичном пуле ограничение составляет 100 сеансов базы данных область на пул.

В плотных эластичных пулах запуск нового расширенного сеанса событий может завершиться ошибкой из-за ограничений памяти, даже если общее количество запущенных сеансов ниже 100.

Чтобы найти общую память, потребляемую сеансом событий, выполните следующий запрос во время подключения к базе данных, в которой запущен сеанс событий:

SELECT name AS session_name,
       total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;

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