Создание сеанса событий с целевым объектом event_file в служба хранилища Azure
Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure
Ниже приведены общие действия, описанные в этом пошаговом руководстве.
- Создание учетной записи служба хранилища Azure или поиск существующей подходящей учетной записи для использования
- Создание контейнера в этой учетной записи хранения
- Создание маркера SAS с необходимым доступом для этого контейнера
- Создание учетных данных для хранения маркера SAS в базе данных или управляемом экземпляре, в котором создается сеанс события
- Создание, запуск и использование сеанса событий
Создание учетной записи хранения и контейнера
Подробное описание создания учетной записи хранения в служба хранилища Azure см. в разделе "Создание учетной записи хранения". Вы узнаете, как создать учетную запись хранения с помощью портал Azure, PowerShell, SQL Azure, шаблона ARM или шаблона Bicep.
Мы рекомендуем использовать учетную запись, которая:
- Является учетной записью
Standard general-purpose v2
. - Имеет свой тип избыточности, соответствующий избыточности базы данных SQL Azure, эластичного пула или управляемого экземпляра, в котором создаются сеансы событий.
- Для локально избыточных ресурсов SQL Azure используйте LRS, GRS или RA-GRS. Для ресурсов SQL, избыточных между зонами, используйте ZRS, GZRS или RA-GZRS. Дополнительные сведения см. в статье Репликация службы хранилища Azure.
Hot
Использует уровень доступа к BLOB-объектам.- Находится в том же регионе Azure, что и база данных SQL Azure, эластичные пулы или управляемый экземпляр.
Затем создайте контейнер в этой учетной записи хранения с помощью портал Azure. Вы также можете создать контейнер с помощью PowerShell или с помощью Azure CLI.
Обратите внимание на имена используемой учетной записи хранения и контейнера .
Создание маркера SAS
Для ядро СУБД запуска сеанса событий требуется конкретный доступ к контейнеру хранилища. Этот доступ предоставляется путем создания маркера SAS для контейнера. Этот маркер должен соответствовать следующим требованиям:
rwl
У вас есть разрешения (Read
,Write
,List
)- Время начала и истечения срока действия, охватывающее время существования сеанса событий
- Нет ограничений IP-адресов
В портал Azure найдите созданную учетную запись хранения и контейнер. Выберите контейнер и перейдите к маркерам >общего доступа "Параметры". Задайте разрешения Read
для , Write
List
и задайте дату и время начала и срока действия. Создаваемый маркер SAS работает только в течение этого интервала времени.
Нажмите кнопку Создать маркер SAS и URL-адрес. Маркер SAS находится в поле маркера SAS BLOB-объектов. Его можно скопировать, чтобы использовать на следующем шаге.
Внимание
Маркер SAS предоставляет доступ для чтения и записи к этому контейнеру. Обработайте его так, как вы будете относиться к паролю или любому другому секрету.
Создание учетных данных для хранения маркера SAS
В База данных SQL Azure используется учетные данные с областью базы данных для хранения маркера SAS. В Управляемый экземпляр SQL Azure используется учетные данные на уровне сервера.
Сохраните маркер SAS в учетных данных с областью базы данных. Используя клиентское средство, например SSMS или ADS, откройте новое окно запроса, подключитесь к базе данных, в которой создается сеанс событий, и вставьте следующий пакет T-SQL. Убедитесь, что вы подключены к пользовательской базе данных, а не к master
базе данных.
Примечание.
Для выполнения следующего пакета T-SQL требуется CONTROL
разрешение базы данных, которое хранится владельцем базы данных (dbo
), членами db_owner
роли базы данных и администратором логического сервера.
/*
Create a master key to protect the secret of the credential
*/
IF NOT EXISTS (
SELECT 1
FROM sys.symmetric_keys
WHERE name = '##MS_DatabaseMasterKey##'
)
CREATE MASTER KEY;
/*
(Re-)create a database scoped credential.
The name of the credential must match the URL of the blob container.
*/
IF EXISTS (
SELECT 1
FROM sys.database_credentials
WHERE name = 'https://exampleaccount4xe.blob.core.windows.net/xe-example-container'
)
DROP DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container];
/*
The secret is the SAS token for the container. The Read, Write, and List permissions are set.
*/
CREATE DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sp=rwl&st=2023-10-17T23:28:32Z&se=2023-10-18T07:28:32Z&spr=https&sv=2022-11-02&sr=c&sig=REDACTED';
Перед выполнением этого пакета внесите следующие изменения:
- Во всех трех случаях
https://exampleaccount4xe.blob.core.windows.net/xe-example-container
заменитеexampleaccount4xe
имя учетной записи хранения и заменитеxe-example-container
именем контейнера. - Замените всю строку между одними кавычками в
SECRET
предложении маркером SAS, скопированным на предыдущем шаге.
Создание, запуск и остановка сеанса событий
После создания учетных данных с маркером SAS можно создать сеанс событий. Для создания сеанса событий не требуется CONTROL
разрешение. Если учетные данные с правильным маркером SAS уже существуют, можно создать сеансы событий, даже если у вас есть более ограниченный набор разрешений. Ознакомьтесь с разрешениями для определенных необходимых разрешений.
Чтобы создать новый сеанс событий в SSMS, разверните узел расширенных событий . Этот узел находится в папке базы данных в База данных SQL Azure и в папке "Управление" в Управляемый экземпляр SQL Azure. Щелкните правой кнопкой мыши папку "Сеансы" и выберите "Создать сеанс...". На странице "Общие " введите имя сеанса, которое находится example-session
в этом примере. На странице "События" выберите одно или несколько событий, которые нужно добавить в сеанс. В этом примере мы выбрали sql_batch_starting
событие.
На странице хранилища данных выберите event_file
целевой тип и вставьте URL-адрес контейнера хранилища в поле URL-адреса хранилища. Введите косую черту/
() в конце этого URL-адреса, а затем имя файла (BLOB-объекта). В нашем примере имя большого двоичного объекта — example-session.xel
и весь URL-адрес.https://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel
Примечание.
Для Управляемый экземпляр SQL вместо вставки URL-адреса контейнера хранилища на странице хранилища данных нажмите кнопку "Скрипт", чтобы создать скрипт T-SQL сеанса. Укажите URL-адрес контейнера в качестве значения filename
аргумента, аналогичного приведенному ниже Управляемый экземпляр SQL примере, и выполните скрипт для создания сеанса.
Теперь, когда сеанс настроен, нажмите кнопку "Скрипт" , чтобы создать скрипт T-SQL сеанса, чтобы сохранить его позже. Ниже приведен сценарий для нашего примера сеанса:
CREATE EVENT SESSION [example-session] ON DATABASE
ADD EVENT sqlserver.sql_batch_starting
ADD TARGET package0.event_file(SET filename=N'https://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel')
GO
Нажмите кнопку "ОК ", чтобы создать сеанс.
В обозреватель объектов разверните папку Session, чтобы увидеть созданный сеанс событий. По умолчанию сеанс не запускается при его создании. Чтобы запустить сеанс, щелкните правой кнопкой мыши имя сеанса и выберите "Пуск сеанса". Позже его можно остановить, нажав кнопку "Остановить сеанс", после запуска сеанса.
Так как пакеты T-SQL выполняются в этой базе данных или управляемом xe-example-container
экземпляре, сеанс записывает события example-session.xel
в большой двоичный объект в контейнере хранилища.
Чтобы остановить сеанс, щелкните его правой кнопкой мыши в обозреватель объектов и выберите "Остановить сеанс".
Просмотр данных о событиях
Данные событий можно просмотреть в пользовательском интерфейсе средства просмотра событий SQL Server Management Studio (SSMS), где можно использовать фильтры и агрегаты для анализа захваченных данных. Дополнительные сведения об использовании средства просмотра событий в SSMS см. в разделе "Просмотр данных о событиях в SSMS".
Скачивание файлов xel из хранилища Azure
Совет
Если вы используете SSMS версии 19.2 или более поздней версии, вам не нужно скачивать xel
файлы, как описано в этом разделе. В этих версиях SSMS считывает xel
файлы для каждого сеанса непосредственно из хранилища Azure. Дополнительные сведения см. в блоге по улучшению расширенных событий в SQL Azure.
Скачайте большой двоичный xel
объект для сеанса из контейнера хранилища и сохраните его в виде локального файла. В портал Azure найдите используемую учетную запись хранения, выберите контейнеры в хранилище данных и выберите контейнер, созданный для сеанса событий. Большой двоичный объект для сеанса имеет имя сеанса в качестве первой части его имени с числовым суффиксом. Выберите многоточие (...), чтобы отобразить контекстное меню для большого двоичного объекта и нажмите кнопку "Скачать".
Вы можете установить служба хранилища Azure Explorer, чтобы скачать несколько больших двоичных xel
объектов в одной операции.
xel
После скачивания файла откройте его в SSMS. В главном меню SSMS перейдите к файлу и нажмите кнопку "Открыть". Если у вас есть один xel
файл, выберите файл... и перейдите к скачанном файлу. Если у вас несколько файлов, созданных xel
с помощью одного сеанса событий (известных как файлы свертки), можно использовать диалоговое окно "Файлы расширенных событий слияния", чтобы открыть все файлы в средстве просмотра событий.
Просмотр данных событий с помощью T-SQL
Чтобы считывать данные сеанса событий с помощью T-SQL, используйте функцию sys.fn_xe_file_target_read_file(). Чтобы использовать эту функцию в базе данных или управляемом экземпляре, отличном от той, в которой создается сеанс событий, создайте учетные данные, чтобы предоставить ядро СУБД доступ к контейнеру хранилища с большими двоичными объектами событий.
Более подробное пошаговое руководство см. в статье "Создание сеанса событий в SSMS".