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


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

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

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

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

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

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

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

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

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

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

Предоставление доступа к контейнеру

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

  • При использовании управляемого удостоверения с проверкой подлинности Microsoft Entra вы назначаете роль RBAC участника данных хранилища BLOB-объектов для контейнера управляемому удостоверению логического сервера SQL Azure или управляемого экземпляра SQL Azure.

    Примечание.

    Использование управляемого удостоверения с расширенными сеансами событий находится в предварительной версии.

  • При использовании проверки подлинности на основе секретов создается маркер SAS для контейнера.

    Чтобы использовать этот тип проверки подлинности, необходимо включить параметр "Разрешить доступ к ключу учетной записи хранения". Дополнительные сведения см. в статье Предотвращение авторизации с общим ключом для учетной записи службы хранения Azure.

Предоставление доступа с помощью управляемого удостоверения

  1. В портал Azure перейдите на страницу удостоверений логического сервера SQL Azure или управляемого экземпляра SQL Azure и убедитесь, что управляемое удостоверение назначено. Дополнительные сведения см. в разделе "Управляемые удостоверения" в Microsoft Entra для SQL Azure.

  2. В портал Azure перейдите к контейнеру хранилища, в котором требуется хранить данные о событиях. На странице контроль доступа (IAM) нажмите кнопку "Добавить", чтобы назначить роль RBAC участника данных хранилища BLOB-объектов управляемому удостоверению логического сервера или управляемого экземпляра SQL.

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

    Дополнительные сведения см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

  3. Создайте учетные данные, чтобы указать ядро СУБД пройти проверку подлинности для служба хранилища Azure с помощью управляемого удостоверения для определенного URL-адреса контейнера.

    Создайте учетные данные в области базы данных. Используя клиентское средство, например SSMS или ADS, откройте новое окно запроса, подключитесь к базе данных, в которой создается сеанс событий, и вставьте следующий пакет T-SQL. Убедитесь, что вы подключены к пользовательской базе данных, а не к master базе данных.

    Примечание.

    Для выполнения следующего пакета T-SQL требуется CONTROL разрешение базы данных, которое хранится владельцем базы данных (dbo), членами db_owner роли базы данных и администратором логического сервера.

    /*
    (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://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    When using managed identity, the credential does not contain a secret
    */
    CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'MANAGED IDENTITY';
    

    Перед выполнением этого пакета сделайте следующее изменение:

    • Во всех трех случаях https://<storage-account-name>.blob.core.windows.net/<container-name>замените <storage-account-name> имя учетной записи хранения и замените <container-name> именем контейнера.

Предоставление доступа с помощью маркера SAS

  1. В портал Azure перейдите к созданной учетной записи хранения и контейнеру. Выберите контейнер и перейдите к маркерам >общего доступа "Параметры".

    Маркер SAS должен соответствовать следующим требованиям:

    • Разрешения, заданные в Read, Write, ListDelete.
    • Время начала и срок действия должны охватывать время существования сеанса событий. Создаваемый маркер SAS работает только в течение этого интервала времени.
    • Нет ограничений IP-адресов.

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

    Внимание

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

    Снимок экрана: экран маркеров общего доступа для контейнера служба хранилища Azure с созданным маркером SAS для примера контейнера.

  2. Создайте учетные данные для хранения маркера SAS.

    Сохраните маркер 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://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    The secret is the SAS token for the container. The Read, Write, and List permissions are set.
    */
    CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        SECRET = '<sas-token>';
    

    Перед выполнением этого пакета внесите следующие изменения:

    • Во всех трех случаях https://<storage-account-name>.blob.core.windows.net/<container-name>замените <storage-account-name> имя учетной записи хранения и замените <container-name> именем контейнера.
    • В предложении SECRET замените <sas-token> маркер SAS, скопированный на предыдущем шаге.

Создание, запуск и остановка сеанса событий

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

Чтобы создать новый сеанс событий в SSMS, разверните узел расширенных событий . Этот узел находится в папке базы данных в База данных SQL Azure и в папке "Управление" в Управляемый экземпляр SQL Azure. Щелкните правой кнопкой мыши папку "Сеансы" и выберите "Создать сеанс...". На странице "Общие " введите имя сеанса, которое находится example-session в этом примере. На странице "События" выберите одно или несколько событий, которые нужно добавить в сеанс. В этом примере мы выбрали sql_batch_starting событие.

Снимок экрана: диалоговое окно

На странице хранилища данных выберите event_file целевой тип и вставьте URL-адрес контейнера хранилища в поле URL-адреса хранилища. Введите косую черту/ () в конце этого URL-адреса, а затем имя файла (BLOB-объекта). В нашем примере имя большого двоичного объекта — example-session.xelи весь URL-адрес.https://<storage-account-name>.blob.core.windows.net/<container-name>/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://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel')
GO

Нажмите кнопку "ОК ", чтобы создать сеанс.

В обозреватель объектов разверните папку Session, чтобы увидеть созданный сеанс событий. По умолчанию сеанс не запускается при его создании. Чтобы запустить сеанс, щелкните правой кнопкой мыши имя сеанса и выберите "Пуск сеанса". Позже его можно остановить, нажав кнопку "Остановить сеанс", после запуска сеанса.

Так как пакеты T-SQL выполняются в этой базе данных или управляемом экземпляре, сеанс записывает события 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".