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:
- Criar uma conta de Armazenamento do Azure ou encontrar uma conta adequada existente para usar
- Criar um contêiner nesta conta de armazenamento
- Crie um token SAS com o acesso necessário para este contêiner
- 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
- 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:
- É uma
Standard general-purpose v2
conta. - Tem seu tipo de redundância correspondente à redundância do banco de dados SQL do Azure, pool elástico ou instância gerenciada onde as sessões de eventos são criadas.
- Para recursos SQL do Azure com redundância local, use LRS, GRS ou RA-GRS. Para recursos SQL do Azure com redundância de zona, use ZRS, GZRS ou RA-GZRS. Para obter mais informações, veja Redundância do Armazenamento do Microsoft Azure.
- Usa a camada de acesso de
Hot
blob. - Está na mesma região do Azure que o banco de dados SQL do Azure, pool elástico ou instância gerenciada.
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
, , Write
List
e 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.
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
exampleaccount4xe
xe-example-container
pelo nome dohttps://exampleaccount4xe.blob.core.windows.net/xe-example-container
seu 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.
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.xel
https://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.
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.xel
xe-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.