Расширенные события в База данных 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
объект:- Используйте учетную запись хранения в том же регионе 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;
Разрешения
Совет
В 2022 году Корпорация Майкрософт представила ряд новых более подробных разрешений для расширенных событий, дополнительные сведения см . в блоге: Новые детализированные разрешения для SQL Server 2022 и SQL Azure для улучшения соблюдения с помощью PoLP.
В База данных 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. Ядро СУБД запуска сеанса событий должен иметь конкретный доступ к этому контейнеру. Этот доступ можно предоставить одним из следующих способов:
Назначьте роль RBAC участника больших двоичных объектов хранилища управляемому удостоверению логического сервера SQL Azure или управляемого экземпляра SQL Azure в контейнере и создайте учетные данные для указания ядро СУБД использовать управляемое удостоверение для проверки подлинности.
В качестве альтернативы назначению роли RBAC участника больших двоичных объектов хранилища можно назначить следующие действия RBAC:
Пространство имен Действие Microsoft.Storage/storageAccounts/blobServices/containers/
read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
delete
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
read
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/
write
Примечание.
Использование управляемого удостоверения с расширенными сеансами событий находится в предварительной версии.
Создайте маркер SAS для контейнера и сохраните маркер в учетных данных.
В База данных SQL Azure необходимо использовать учетные данные с областью базы данных. В Управляемый экземпляр SQL Azure используйте учетные данные на уровне сервера.
Маркер SAS, создаваемый для контейнера служба хранилища Azure, должен соответствовать следующим требованиям:
rwdl
У вас есть разрешения (Read
,Write
,Delete
)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;
Чтобы найти общую память сеанса событий для эластичного пула, этот запрос необходимо выполнить в каждой базе данных в пуле.