Criar uma sessão de evento com um destino event_file no Armazenamento do Azure

Aplica-se a:Banco de Dados SQL do Azure Instância Gerenciada SQLdo Azure

As etapas de alto nível neste passo a passo são:

  1. Criar uma conta de Armazenamento do Azure ou encontrar uma conta adequada existente para usar
  2. Criar um contêiner nesta conta de armazenamento
  3. Crie um token SAS com o acesso necessário para este contêiner
  4. Crie uma credencial para armazenar o token SAS no banco de dados ou na instância gerenciada onde você cria a sessão de evento
  5. Criar, iniciar e usar uma sessão de evento

Criar uma conta de armazenamento e um contêiner

Para obter uma descrição detalhada de como criar uma conta de armazenamento no Armazenamento do Azure, consulte Criar uma conta de armazenamento. Você aprende a criar uma conta de armazenamento usando o portal do Azure, PowerShell, Azure SQL, um modelo ARM ou um modelo Bicep.

Recomendamos que você use uma conta que:

Em seguida, crie um contêiner nessa conta de armazenamento usando o portal do Azure. Você também pode criar um contêiner usando o PowerShell ou usando a CLI do Azure.

Anote os nomes da conta de armazenamento e do contêiner que você usa.

Criar um token SAS

O Mecanismo de Banco de Dados que executa a sessão de eventos precisa de acesso específico ao contêiner de armazenamento. Você concede esse acesso criando um token SAS para o contêiner. Este token deve satisfazer os seguintes requisitos:

  • Ter as rwl permissões (Read, Write, List)
  • Ter a hora de início e a hora de expiração que englobam o tempo de vida da sessão do evento
  • Não tem restrições de endereço IP

No portal do Azure, localize a conta de armazenamento e o contêiner que você criou. Selecione o contêiner e navegue até Configurações > Tokens de acesso compartilhado. Defina Permissões como Read, , WriteListe defina a data e hora de Início e Expiração. O token SAS criado só funciona dentro desse intervalo de tempo.

Selecione o botão Gerar token SAS e URL . O token SAS está na caixa de token SAS de Blob. Você pode copiá-lo para usar na próxima etapa.

Importante

O token SAS fornece acesso de leitura e gravação a esse contêiner. Trate-o como trataria uma palavra-passe ou qualquer outro segredo.

Screenshot of the Shared Access Tokens screen for an Azure Storage container, with a generated SAS token for an example container.

Criar uma credencial para armazenar o token SAS

No Banco de Dados SQL do Azure, você usa uma credencial com escopo de banco de dados para armazenar o token SAS. Na Instância Gerenciada SQL do Azure, você usa uma credencial com escopo de servidor.

Armazene o token SAS em uma credencial com escopo de banco de dados. Usando uma ferramenta de cliente, como SSMS ou ADS, abra uma nova janela de consulta, conecte-se ao banco de dados onde você cria a sessão de evento e cole o seguinte lote T-SQL. Verifique se você está conectado ao banco de dados de usuários e não ao master banco de dados.

Nota

A execução do seguinte lote T-SQL requer a CONTROL permissão do banco de dados, que é mantida pelo proprietário do banco de dados (dbo), pelos membros da db_owner função de banco de dados e pelo administrador do servidor lógico.

/*
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';

Antes de executar este lote, faça as seguintes alterações:

  • Em todas as três ocorrências do , substitua pelo nome da sua conta de armazenamento e substitua exampleaccount4xexe-example-container pelo nome do https://exampleaccount4xe.blob.core.windows.net/xe-example-containerseu contêiner.
  • Substitua toda a cadeia de caracteres entre aspas simples na SECRET cláusula pelo token SAS copiado na etapa anterior.

Criar, iniciar e parar uma sessão de Evento

Depois que a credencial com o token SAS for criada, você poderá criar a sessão do evento. Criar uma sessão de evento não requer a CONTROL permissão. Se a credencial com o token SAS correto já existir, você poderá criar sessões de evento mesmo que tenha um conjunto mais restrito de permissões. Consulte as permissões para as permissões específicas necessárias.

Para criar uma nova sessão de evento no SSMS, expanda o nó Eventos Estendidos . Este nó está sob a pasta de banco de dados no Banco de Dados SQL do Azure e sob a pasta Gerenciamento na Instância Gerenciada SQL do Azure. Clique com o botão direito do mouse na pasta Sessões e selecione Nova sessão.... Na página Geral , insira um nome para a sessão, que está example-session neste exemplo. Na página Eventos, selecione um ou mais eventos para adicionar à sessão. Neste exemplo, selecionamos o sql_batch_starting evento.

Screenshot of the New Session SSMS dialog showing the event selection page with the sql_batch_starting event selected.

Na página Armazenamento de Dados, selecione event_file como o tipo de destino e cole a URL do contêiner de armazenamento na caixa URL de Armazenamento. Digite uma barra () no final deste URL, seguida pelo nome do arquivo (/blob). No nosso exemplo, o nome do blob é , e o URL inteiro é example-session.xelhttps://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel.

Nota

Para Instância Gerenciada SQL, em vez de colar a URL do contêiner de armazenamento na página Armazenamento de dados, use o botão Script para criar um script T-SQL da sessão. Especifique a URL do contêiner como o valor para o argumento, semelhante ao exemplo de Instância Gerenciada SQL abaixo, e execute o filename script para criar a sessão.

Screenshot of the New Session SSMS dialog showing the data storage selection page with an event_file target selected and an entered storage URL.

Agora que a sessão está configurada, você pode selecionar o botão Script para criar um script T-SQL da sessão, para salvá-lo para mais tarde. Aqui está o script para nossa sessão de exemplo:

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

Selecione OK para criar a sessão.

No Pesquisador de Objetos, expanda a pasta Sessões para ver a sessão de evento que você criou. Por padrão, a sessão não é iniciada quando é criada. Para iniciar a sessão, clique com o botão direito do rato no nome da sessão e selecione Iniciar sessão. Mais tarde, você pode pará-lo selecionando de forma semelhante Parar sessão, uma vez que a sessão esteja em execução.

Como os lotes T-SQL são executados nesse banco de dados ou instância gerenciada, a sessão grava eventos no blob no example-session.xelxe-example-container contêiner de armazenamento.

Para interromper a sessão, clique com o botão direito do mouse nela no Pesquisador de Objetos e selecione Parar Sessão.

Ver dados do evento

Você pode exibir dados de eventos na interface do usuário do visualizador de eventos do SQL Server Management Studio (SSMS), onde pode usar filtros e agregações para analisar os dados capturados. Para obter mais informações sobre como usar o visualizador de eventos no SSMS, consulte Exibir dados de eventos no SSMS.

Baixar arquivos xel do armazenamento do Azure

Gorjeta

Se você usar o SSMS v19.2 ou posterior, não precisará baixar xel arquivos conforme descrito nesta seção. Nessas versões, o SSMS lê os xel arquivos de cada sessão diretamente do armazenamento do Azure. Para obter mais informações, consulte o blog Improving Extended Events in Azure SQL .

Baixe o blob da sessão do contêiner de armazenamento e salve-o xel como um arquivo local. No portal do Azure, localize a conta de armazenamento que você usou, selecione Contêineres em Armazenamento de dados e selecione o contêiner que você criou para sua sessão de evento. O blob da sessão tem o nome da sessão como a primeira parte de seu nome, com um sufixo numérico. Selecione as reticências (...) para mostrar o menu de contexto do blob e selecione Download.

Você pode instalar o Gerenciador de Armazenamento do Azure para baixar vários xel blobs em uma operação.

Depois que o arquivo for baixado, abra-o xel no SSMS. No menu principal do SSMS, vá para Arquivo e selecione Abrir. Se você tiver um único xel arquivo, selecione Arquivo e navegue até o arquivo baixado. Se você tiver vários xel arquivos gerados pela mesma sessão de evento (conhecidos como arquivos de sobreposição), poderá usar a caixa de diálogo Mesclar arquivos de eventos estendidos... para abrir todos eles no visualizador de eventos.

Exibir dados de eventos usando T-SQL

Para ler dados de sessão de eventos usando T-SQL, use a função sys.fn_xe_file_target_read_file( ). Para usar essa função em um banco de dados ou instância gerenciada diferente daquela em que a sessão de evento é criada, crie uma credencial para dar ao Mecanismo de Banco de Dados acesso ao contêiner de armazenamento com os blobs de evento.

Para obter um passo a passo mais detalhado, consulte Criar uma sessão de evento no SSMS.