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


Создание сеанса событий с целевым объектом event_file в служба хранилища Azure

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

Ниже приведены общие действия, описанные в этом пошаговом руководстве.

  1. Создание учетной записи служба хранилища Azure или поиск существующей подходящей учетной записи для использования
  2. Создание контейнера в этой учетной записи хранения
  3. Создание маркера SAS с необходимым доступом для этого контейнера
  4. Создание учетных данных для хранения маркера SAS в базе данных или управляемом экземпляре, в котором создается сеанс события
  5. Создание, запуск и использование сеанса событий

Создание учетной записи хранения и контейнера

Подробное описание создания учетной записи хранения в служба хранилища Azure см. в разделе "Создание учетной записи хранения". Вы узнаете, как создать учетную запись хранения с помощью портал Azure, PowerShell, SQL Azure, шаблона ARM или шаблона Bicep.

Мы рекомендуем использовать учетную запись, которая:

  • Является учетной записью Standard general-purpose v2 .
  • Имеет свой тип избыточности, соответствующий избыточности базы данных SQL Azure, эластичного пула или управляемого экземпляра, в котором создаются сеансы событий.
  • Hot Использует уровень доступа к BLOB-объектам.
  • Находится в том же регионе Azure, что и база данных SQL Azure, эластичные пулы или управляемый экземпляр.

Затем создайте контейнер в этой учетной записи хранения с помощью портал Azure. Вы также можете создать контейнер с помощью PowerShell или с помощью Azure CLI.

Обратите внимание на имена используемой учетной записи хранения и контейнера .

Создание маркера SAS

Для ядро СУБД запуска сеанса событий требуется конкретный доступ к контейнеру хранилища. Этот доступ предоставляется путем создания маркера SAS для контейнера. Этот маркер должен соответствовать следующим требованиям:

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

В портал Azure найдите созданную учетную запись хранения и контейнер. Выберите контейнер и перейдите к маркерам >общего доступа "Параметры". Задайте разрешения Read для , WriteListи задайте дату и время начала и срока действия. Создаваемый маркер SAS работает только в течение этого интервала времени.

Нажмите кнопку Создать маркер SAS и URL-адрес. Маркер SAS находится в поле маркера SAS BLOB-объектов. Его можно скопировать, чтобы использовать на следующем шаге.

Внимание

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

Снимок экрана: экран маркеров общего доступа для контейнера служба хранилища Azure с созданным маркером 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".