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 de SQL do Azure
As etapas de alto nível neste passo a passo são:
- Criar uma conta de Armazenamento do Azure ou localize uma conta adequada já existente para usar.
- Criar um contêiner nesta conta de armazenamento.
- Conceder ao Mecanismo de Banco de Dados o acesso necessário ao contêiner usando uma atribuição de função RBAC (função de controle de acesso baseado em função) ou um token SAS.
- Criar uma credencial no banco de dados ou na instância gerenciada onde você criará a sessão de eventos.
- Criar, iniciar e usar uma sessão de eventos.
Criar uma conta e um contêiner de armazenamento
Para obter uma descrição mais detalhada sobre a criação de uma conta de armazenamento do Azure, veja Criar uma conta de armazenamento. Você aprenderá a criar uma conta de armazenamento usando o portal do Azure, PowerShell, SQL do Azure, um modelo do ARM ou um modelo Bicep.
Recomendamos que você use uma conta com as seguintes características:
- É uma conta do
Standard general-purpose v2
. - Tem um 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 evento são criadas.
- Para recursos do SQL do Azure com redundância local, use LRS, GRS ou RA-GRS. Para recursos do SQL do Azure com redundância de zona, use ZRS, GZRS ou RA-GZRS. Para mais informações, confira Redundância do Armazenamento do Microsoft Azure.
- Usa a
Hot
camada de acesso de blob. - Está na mesma região do Azure que o banco de dados SQL do Azure, pool elástico ou instância gerenciada.
Depois, 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 a CLI do Azure.
Anote os nomes da conta de armazenamento e do contêiner que você criou. Você precisará deles nas etapas a seguir.
Permitir acesso ao contêiner
Para ler e gravar dados de eventos, o Mecanismo de Banco de Dados requer acesso específico ao contêiner. Você pode conceder esse acesso de duas maneiras, dependendo da escolha do tipo de autenticação:
Se estiver usando a identidade gerenciada com autenticação através do Microsoft Entra, atribua a função RBAC Colaborador de Dados de Blob de Armazenamento para o contêiner à identidade gerenciada do servidor lógico de SQL do Azure ou da instância gerenciada de SQL do Azure.
Observação
O uso da identidade gerenciada com sessões de eventos estendidas está em versão prévia.
Se estiver usando a autenticação baseada em segredo, crie um token SAS para o contêiner.
Para usar esse tipo de autenticação, a opção Permitir acesso à chave da conta de armazenamento deve estar habilitada. Para obter mais informações, veja Impedir a autorização de chave compartilhada para uma conta do Armazenamento do Microsoft Azure.
Conceder acesso usando a identidade gerenciada
No portal do Azure, navegue até a página Identidade do seu servidor lógico de SQL do Azure ou da instância gerenciada de SQL do Azure e verifique se uma identidade gerenciada está atribuída. Para obter mais informações, confira Identidades gerenciadas no Microsoft Entra para o SQL do Azure.
No portal do Azure, navegue até o contêiner de armazenamento onde deseja armazenar os dados de eventos. Na página Controle de Acesso (IAM), selecione Adicionar para atribuir a função RBAC Colaborador de Dados de Blob de Armazenamento à identidade gerenciada do servidor lógico ou da instância gerenciada de SQL.
Se a identidade gerenciada atribuída pelo sistema estiver habilitada para o servidor lógico ou para a instância gerenciada de SQL, atribua a função a essa identidade. Se a identidade atribuída pelo sistema estiver desabilitada, mas houver uma ou mais identidades atribuídas pelo usuário, atribua a função à identidade atribuída pelo usuário designada como a identidade primária.
Para saber mais, consulte Atribuir uma função do Azure para acesso a dados de blob.
Crie uma credencial para instruir o Mecanismo de Banco de Dados a se autenticar no Armazenamento do Azure usando a identidade gerenciada para uma URL de contêiner específica.
Crie uma credencial com escopo de banco de dados. Usando uma ferramenta de cliente, como o SSMS ou o ADS, abra uma janela de nova consulta, conecte-se ao banco de dados onde a sessão de evento foi criada e cole o lote T-SQL a seguir. Verifique se você está conectado ao banco de dados de usuário, e não ao banco de dados
master
.Observação
A execução do seguinte lote T-SQL requer a permissão
CONTROL
do banco de dados, que é gerenciada pelo proprietário do banco de dados (dbo
), pelos membros da função de banco de dados dedb_owner
e pelo administrador do servidor lógico./* (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';
Antes de executar esse lote, faça as seguintes alterações:
- Nas três ocorrências de
https://<storage-account-name>.blob.core.windows.net/<container-name>
, substitua<storage-account-name>
pelo nome da sua conta de armazenamento e substitua<container-name>
pelo nome do seu contêiner.
- Nas três ocorrências de
Conceder acesso usando um token SAS
No portal do Azure, navegue até a conta de armazenamento e contêiner que você criou. Selecione o contêiner e navegue até Configurações > Tokens de acesso compartilhado.
O token SAS deve atender aos seguintes requisitos:
- Permissões configuradas para
Read
,Write
,Delete
,List
. - O tempo de Início e Expiração deve abranger o período de vida da sessão de eventos. O token SAS que você cria só funciona dentro desse intervalo de tempo.
- Não ter restrições de endereço IP.
Selecione o botão Gerar token SAS e URL. O token SAS está na caixa Token SAS do 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 você trataria uma senha ou qualquer outro segredo.
- Permissões configuradas para
Crie uma credencial para armazenar o token SAS.
Armazene o token SAS em uma credencial com escopo de banco de dados. Usando uma ferramenta de cliente, como o SSMS ou o ADS, abra uma janela de nova consulta, conecte-se ao banco de dados onde a sessão de evento foi criada e cole o lote T-SQL a seguir. Verifique se você está conectado ao banco de dados de usuário, e não ao banco de dados
master
.Observação
A execução do seguinte lote T-SQL requer a permissão
CONTROL
do banco de dados, que é gerenciada pelo proprietário do banco de dados (dbo
), pelos membros da função de banco de dados dedb_owner
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://<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>';
Antes de executar esse lote, faça as seguintes alterações:
- Nas três ocorrências de
https://<storage-account-name>.blob.core.windows.net/<container-name>
, substitua<storage-account-name>
pelo nome da sua conta de armazenamento e substitua<container-name>
pelo nome do seu contêiner. - Na cláusula
SECRET
, substitua<sas-token>
pelo token SAS copiado na etapa anterior.
- Nas três ocorrências de
Criar, iniciar e parar uma sessão de eventos
Depois de criar a credencial, é possível criar a sessão de eventos. Diferente da criação da credencial, a criação de uma sessão de eventos não exige a permissão CONTROL
. Após a criação da credencial, você pode criar sessões de eventos mesmo se tiver permissões mais restritas. Consulte permissões para saber as permissões específicas necessárias.
Para criar uma nova sessão de evento no SSMS, expanda o nó Eventos Estendidos. Esse nó está na pasta de banco de dados no Banco de Dados SQL do Azure e na pasta Gerenciamento na Instância Gerenciada de SQL do Azure. Clique com o botão direito do mouse na pasta Sessões e selecione Nova Sessão.... Na página Geral, informe um nome para a sessão, que neste exemplo é example-session
. Na página Eventos, selecione um ou mais eventos para adicionar à sessão. Neste exemplo, selecionamos o evento sql_batch_starting
.
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 dessa URL, seguida pelo nome do arquivo (BLOb). Em nosso exemplo, o nome do BLOb é example-session.xel
, e a URL inteira é https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel
.
Observação
Para Instância Gerenciada de 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 do filename
argumento, similar ao exemplo de Instância Gerenciada de SQL abaixo, e execute o script para criar a sessão.
Agora que a sessão está configurada, você pode escolher o botão Script para criar um script T-SQL da sessão e salvá-lo para mais tarde. Veja abaixo o script do nosso exemplo de sessão:
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
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 mouse no nome da sessão e selecione Iniciar Sessão. Você pode interrompê-la mais tarde selecionando Parar sessão da mesma forma, depois que a sessão estiver em execução.
À medida que lotes de T-SQL são executados neste banco de dados ou instância gerenciada, a sessão grava eventos no blob example-session.xel
no 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.
Exibir dados do evento
Você pode exibir os dados de eventos na interface do usuário do visualizador de eventos do SQL Server Management Studio (SSMS), onde é possível 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
Dica
Se você usar o SSMS v19.2 ou posterior, não será necessário baixar os arquivos xel
da maneira descrita nesta seção. Nessas versões, o SSMS lê os arquivos xel
de cada sessão diretamente do armazenamento do Azure. Para obter mais informações, consulte o blog Melhorar eventos estendidos no SQL do Azure.
Baixe o BLOB xel
da sessão do contêiner de armazenamento e salve-o como um arquivo local. No portal do Azure, localize a conta de armazenamento usada, selecione Contêineres em Armazenamento de dados e encontre o contêiner criado para sua sessão de evento. O BLOb da sessão tem o nome da sessão na primeira parte seguida por um sufixo numérico. Selecione as reticências (...) para mostrar o menu de contexto do BLOb e selecione Baixar.
Você pode instalar o Gerenciador de Armazenamento do Azure para baixar vários BLObs xel
em uma operação.
Depois que o arquivo xel
for baixado, abra-o no SSMS. No menu principal do SSMS, vá para Arquivo e selecione Abrir. Se você tiver um único arquivo xel
, selecione Arquivo... e navegue até o arquivo que você baixou. Caso tenha vários arquivos xel
gerados pela mesma sessão de evento (conhecidos como arquivos de substituição), você poderá usar a caixa de diálogo Mesclar Arquivos de Evento Estendido... para abrir todos eles no visualizador de eventos.
Exibir dados de eventos usando T-SQL
Para ler dados da sessão de evento com o 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 onde a sessão de eventos foi criada, conceda acesso ao Mecanismo de Banco de Dados no contêiner de armazenamento com os blobs de dados de eventos.
Para obter um passo a passo mais detalhado, consulte Criar uma sessão de evento no SSMS.