Descrição geral dos Extended Events

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

A arquitetura XEvents (Eventos Estendidos) permite que os usuários coletem o máximo ou o mínimo de dados necessário para monitorar, identificar ou solucionar problemas de desempenho no SQL Server, no Banco de Dados SQL do Azure, na Instância Gerenciada SQL do Azure e no Banco de Dados SQL no Fabric. O Extended Events é altamente configurável, leve e dimensiona-se bem. Para obter mais informações, consulte Arquitetura de eventos estendidos.

Os Eventos Estendidos substituem os recursos preteridos do Rastreamento do SQL e do SQL Server Profiler.

Para começar a utilizar Eventos Estendidos, use Início rápido: Eventos Estendidos.

Observação

Para o Banco de Dados SQL do Azure, o Banco de Dados SQL na Malha e a Instância Gerenciada do SQL, os exemplos de código podem diferir porque os arquivos para o event_file destino são armazenados no Armazenamento do Azure. Para obter mais informações, consulte Eventos estendidos no SQL do Azure.

Benefícios dos eventos prolongados

O Extended Events é um sistema de monitoramento de desempenho leve que usa recursos mínimos do sistema enquanto fornece uma visão detalhada e aprofundada do mecanismo de banco de dados. O SQL Server Management Studio fornece uma interface gráfica do usuário para Eventos Estendidos para criar, modificar e descartar sessões de eventos e para exibir e analisar dados de sessão. Para saber mais sobre o suporte a eventos estendidos no Management Studio, consulte:

Conceitos de Eventos Estendidos

Os Eventos Estendidos se baseiam nos conceitos existentes do Rastreamento de Eventos para Windows (ETW), como consumidor de eventos e eventos, e introduz novos conceitos, como ação e predicado.

A tabela a seguir fornece referências de documentação para entender os conceitos em Eventos estendidos.

Artigo Description
Pacotes de Eventos Estendidos Descreve os pacotes de eventos estendidos que contêm objetos. Esses objetos são usados para obter e processar dados quando uma sessão de Eventos Estendidos está em execução.
Alvos de eventos estendidos Descreve os consumidores de eventos que podem receber dados durante uma sessão de evento.
Mecanismo de eventos estendidos Descreve o mecanismo que implementa e gerencia uma sessão de Eventos Estendidos.
Sessões alargadas de eventos Descreve a sessão Eventos Estendidos.

Arquitetura de eventos estendidos

Eventos Estendidos é um nome para um sistema geral de manipulação de eventos para sistemas de servidor. A infraestrutura de Eventos Estendidos oferece suporte à correlação de dados do mecanismo de banco de dados e, sob determinadas condições, à correlação de dados do sistema operacional e dos aplicativos de banco de dados. No caso do sistema operacional, a saída de Eventos Estendidos deve ser direcionada para o Rastreamento de Eventos para Windows (ETW). O ETW pode correlacionar os dados de evento com dados de eventos do sistema operacional ou do aplicativo.

Todos os aplicativos têm pontos de execução que são úteis dentro e fora de um aplicativo. Dentro do aplicativo, o processamento assíncrono pode ser enfileirado usando informações coletadas durante a execução inicial de uma tarefa. Fora do aplicativo, os pontos de execução fornecem informações aos utilitários de monitoramento. As informações são sobre as características comportamentais e de desempenho do aplicativo monitorado.

O Extended Events oferece suporte ao uso de dados de eventos fora de um processo. Esses dados geralmente são usados por usuários que administram ou dão suporte a um produto fazendo monitoramento de desempenho ou desenvolvendo aplicativos em um produto para fins de depuração. Os dados são consumidos ou analisados usando ferramentas como SQL Server Management Studio, XEvent Profiler e Monitor de Desempenho e ferramentas de linha de comando T-SQL ou Windows.

Os Eventos Estendidos têm os seguintes aspetos principais de design:

  • O mecanismo de Eventos Estendidos é agnóstico a eventos. O mecanismo pode vincular qualquer evento a qualquer destino, porque o mecanismo não é restrito pelo conteúdo do evento. Para obter mais informações sobre o mecanismo de eventos estendidos, consulte mecanismo de eventos estendidos.
  • Os eventos são separados dos consumidores de eventos, que são chamados de destinos em Eventos Estendidos. Isso significa que qualquer alvo pode receber qualquer evento. Além disso, qualquer evento gerado pode ser consumido automaticamente pelo destino, que pode registrar ou fornecer contexto de evento adicional. Para obter mais informações, consulte Extended Events targets.
  • Os eventos são distintos da ação a ser tomada quando um evento ocorre. Portanto, qualquer ação pode ser associada a qualquer evento.
  • Os predicados podem filtrar dinamicamente quando os dados de eventos devem ser capturados. A filtragem dinâmica aumenta a flexibilidade da infraestrutura de Eventos Estendidos. Para obter mais informações, consulte Pacotes de eventos estendidos.

Os Eventos Estendidos podem gerar dados de eventos de forma síncrona (e processar esses dados de forma assíncrona), o que fornece uma solução flexível para manipulação de eventos. Além disso, os Eventos Estendidos fornecem os seguintes recursos:

  • Uma abordagem unificada para lidar com eventos em todo o sistema de servidor, permitindo que os usuários isolem eventos específicos para fins de solução de problemas.
  • Integração e suporte para ferramentas ETW existentes.
  • Um mecanismo de manipulação de eventos totalmente configurável que usa Transact-SQL.
  • A capacidade de monitorar dinamicamente processos ativos, tendo um efeito mínimo sobre esses processos.
  • Uma sessão de integridade do sistema padrão que é executada sem efeitos de desempenho percetíveis. A sessão coleta dados do sistema que você pode usar para ajudar a solucionar problemas de desempenho. Para mais informações, consulte Utilizar a sessão system_health.

Tarefas de Eventos Estendidos

Ao utilizar o Management Studio ou o Transact-SQL para executar instruções DDL (Data Definition Language) do Transact-SQL, consultar vistas e funções de gestão dinâmica ou vistas de catálogo, pode criar soluções simples ou complexas de resolução de problemas com os Eventos Estendidos do SQL Server para o seu ambiente SQL Server.

Descrição da tarefa Artigo
Use o Pesquisador de Objetos para gerenciar sessões de eventos. Gerenciar sessões de eventos no Pesquisador de Objetos
Descreve como usar destinos de Eventos Estendidos disponíveis. Alvos de eventos estendidos
Descreve como exibir e atualizar dados de destino. Exibir dados de eventos no SQL Server Management Studio
Descreve a arquitetura das sessões de Eventos Estendidos. Sessões alargadas de eventos
Descreve como usar as ferramentas de Eventos Estendidos para criar e gerenciar suas sessões de Eventos Estendidos. Ferramentas de eventos estendidos
Descreve como alterar uma sessão de eventos estendidos. Alterar uma sessão de eventos estendida
Descreve como obter informações sobre os campos associados aos eventos. Obter os campos para todos os eventos
Descreve como descobrir quais eventos estão disponíveis nos pacotes registrados. SELECTs e JOINs de exibições do sistema para eventos estendidos
Descreve como exibir os eventos e ações de Eventos Estendidos que são equivalentes a cada evento de Rastreamento SQL e suas colunas associadas. Exibir os eventos estendidos equivalentes a classes de evento de rastreamento SQL
Descreve como converter um script de Rastreamento SQL existente em uma sessão de Eventos Estendidos. Converter um script de rastreamento SQL existente em uma sessão de eventos estendida
Descreve como determinar quais consultas estão mantendo o bloqueio, o plano da consulta e a pilha de Transact-SQL no momento em que o bloqueio foi feito. Determinar quais consultas mantêm bloqueios
Descreve como identificar a origem dos bloqueios. Encontre os objetos que têm mais fechaduras tomadas sobre eles
Descreve como usar eventos estendidos com rastreamento de eventos para Windows para monitorar a atividade do sistema. Monitorizar a Atividade do Sistema Usando Eventos Estendidos
Utilizar vistas de catálogo e vistas de gestão dinâmica (DMVs) para Eventos Estendidos SELECTs e JOINs de exibições do sistema para eventos estendidos

Vistas alargadas do catálogo de Eventos

O Extended Events fornece várias vistas de catálogo. As visualizações de catálogo informam sobre os metadados ou a definição da sessão do evento. Para obter informações sobre instâncias de sessões de eventos ativas, consulte Vistas de Gestão Dinâmica de Eventos Estendidos.

Nome da vista de catálogo Description
sys.database_event_session_actions Retorna uma linha para cada ação em cada evento de uma sessão de evento com escopo de banco de dados.
sys.database_event_session_events Retorna uma linha para cada evento numa sessão de eventos com âmbito de base de dados.
sys.database_event_session_fields Retorna uma linha para cada coluna personalizável que foi explicitamente definida nos eventos e nos alvos de uma sessão de escopo do banco de dados.
sys.database_event_session_targets Retorna uma linha para cada alvo de evento numa sessão de eventos com âmbito de base de dados.
sys.database_event_sessions Retorna uma linha para cada sessão de evento com escopo de banco de dados.

Vistas de gestão dinâmica de Eventos Estendidos

Os Eventos Estendidos disponibilizam várias vistas de gestão dinâmica (DMVs). Os DMVs retornam informações sobre sessões de eventos ativas (iniciadas), como estatísticas de sessão e de destino.

Nome do DMV Description
sys.dm_xe_database_session_event_actions Retorna informações sobre ações de sessão de evento com escopo de banco de dados.
sys.dm_xe_database_session_events Fornece informações sobre eventos de sessões com âmbito de base de dados.
sys.dm_xe_database_session_object_columns Mostra os valores de configuração para objetos vinculados a uma sessão com escopo de banco de dados.
sys.dm_xe_database_session_targets Retorna informações sobre destinos para sessões de eventos com escopo de base de dados.
sys.dm_xe_database_sessions Retorna uma linha para cada sessão de evento com escopo de base de dados que está a ser executada na base de dados atual.

Permissions

No Banco de Dados SQL do Azure, no Banco de Dados SQL no Fabric, na Instância Gerenciada SQL do Azure e no SQL Server 2022 e versões posteriores, os Eventos Estendidos dão suporte a um modelo de permissão granular. As seguintes permissões podem ser concedidas:

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

Para informações sobre o que cada uma destas permissões controla, veja CREATE EVENT SESSION, ALTER EVENT SESSION, e DROP EVENT SESSION.

Todas essas permissões estão incluídas na permissão CONTROL no banco de dados, na instância gerida do SQL ou na instância do SQL Server. No Banco de Dados SQL do Azure, o proprietário do banco de dados (dbo), os db_owner membros da função de banco de dados e os administradores do servidor lógico detêm a permissão do banco de dados CONTROL . Na Instância Gerenciada SQL do Azure e no SQL Server, os membros da função de servidor sysadmin mantêm a permissão CONTROL na instância.

Os exemplos de código podem diferir para o Banco de Dados SQL do Azure, o Banco de Dados SQL na Malha e a Instância Gerenciada SQL

Alguns exemplos de código Transact-SQL escritos para o SQL Server precisam de pequenas alterações para serem executados no Banco de Dados SQL do Azure ou no Banco de Dados SQL na Malha. Uma categoria desses exemplos de código envolve exibições de catálogo cujos prefixos de nome diferem dependendo do tipo de mecanismo de banco de dados:

  • server_ - prefixo para SQL Server e Instância Gerenciada SQL do Azure
  • database_ - prefixo para Banco de Dados SQL do Azure, Banco de Dados SQL na Malha e Instância Gerenciada SQL

O Banco de Dados SQL do Azure e o Banco de Dados SQL no Fabric oferecem suporte apenas a sessões de eventos com escopo de banco de dados. SQL Server Management Studio (SSMS) suporta sessões de eventos com âmbito de base de dados para Base de Dados SQL do Azure: um nó de Eventos Estendidos contendo sessões com âmbito de base de dados aparece sob cada base de dados no Explorador de Objetos.

A Instância Gerenciada SQL do Azure dá suporte a sessões com escopo de banco de dados e sessões com escopo de servidor. O SSMS oferece suporte total a sessões com escopo de servidor para Instância Gerenciada SQL: um nó Eventos Estendidos contendo todas as sessões com escopo de servidor aparece na pasta Gerenciamento de cada instância gerenciada no Pesquisador de Objetos.

Observação

As sessões de eventos com escopo de servidor são recomendadas para a Instância Gerenciada SQL do Azure.

As sessões de eventos com escopo de banco de dados não são exibidas no Pesquisador de Objetos no SSMS para Instância Gerenciada SQL do Azure. Em uma instância gerenciada pelo SQL, as sessões de eventos com escopo de banco de dados só podem ser consultadas e gerenciadas com o Transact-SQL.

Para ilustração, a tabela a seguir lista e compara dois subconjuntos de exibições de catálogo. Os subconjuntos têm prefixos de nome diferentes porque suportam diferentes tipos de mecanismo de banco de dados.

Nome no SQL Server e na Instância Gerenciada SQL do Azure Nome no Banco de Dados SQL do Azure, Banco de Dados SQL no Fabric e Instância Gerenciada SQL do Azure
sys.server_event_session_actions
sys.server_event_session_events
sys.server_event_session_fields
sys.server_event_session_targets
sys.server_event_sessions
sys.database_event_session_actions
sys.database_event_session_events
sys.database_event_session_fields
sys.database_event_session_targets
sys.database_event_sessions