Os Eventos Estendidos são um recurso poderoso no SQL Server que permite capturar e analisar eventos que ocorrem dentro do banco de dados. Para aproveitar ao máximo os Eventos Estendidos, é importante entender os vários componentes que compõem uma Sessão de Evento.
Evento
O primeiro componente crítico de uma Sessão de Evento é o próprio Evento. Um Evento representa uma ocorrência de algo que interessa a você como observador. Pode ser uma instrução SQL específica sendo executada, uma situação de deadlock ou qualquer outro evento que você queira capturar. Compreender os diferentes tipos de eventos e suas cargas é essencial para construir Sessões de Evento eficazes.
Predicados
Os Predicados são o mecanismo de filtragem nos Eventos Estendidos. Eles permitem que você especifique condições que determinam se um evento deve ser capturado ou não. Existem diferentes tipos de predicados, como predicados de origem e predicados de comparação, que fornecem flexibilidade na definição dos critérios de filtragem. Deve-se considerar cuidadosamente os predicados ao criar uma Sessão de Evento para garantir que apenas eventos relevantes sejam capturados.
Ação
Uma Ação é um dado adicional que é anexado à carga do evento. Ele fornece contexto ou informações adicionais sobre o evento. As Ações podem ser usadas para capturar pontos de dados específicos, como o texto SQL de uma instrução ou o nome do banco de dados envolvido. Incluir ações relevantes em sua Sessão de Evento pode melhorar significativamente os dados capturados e facilitar a análise.
Destino
O Destino é o consumidor dos dados da sessão de eventos. Ele determina onde os eventos capturados serão armazenados ou enviados para análise posterior. Existem vários tipos de destinos disponíveis, como destinos de memória e destinos de arquivo. A escolha do(s) destino(s) apropriado(s) depende de seus requisitos específicos e do uso pretendido dos dados capturados.
Ao juntar esses componentes, você pode criar uma Sessão de Evento que captura e analisa os eventos que lhe interessam. Vamos dar uma olhada em um exemplo:
CRIAR SESSÃO DE EVENTO buildmysession NO SERVIDOR
ADICIONAR EVENTO sqlserver.sql_statement_completed (
AÇÃO ( sqlserver.sql_text )
ONDE (sqlserver.database_name = 'AdventureWorks2014'
E package0.counter = 2)
)
ADICIONAR DESTINO package0.ring_buffer,
ADICIONAR DESTINO package0.event_file (SET filename = N'C:\Database\XE\pred_order6.xel')
COM ( MAX_DISPATCH_LATENCY = 1 SEGUNDOS );
Neste exemplo, estamos criando uma Sessão de Evento chamada “buildmysession” que captura o texto SQL da segunda ocorrência de um evento sql_statement_completed no banco de dados AdventureWorks2014. Os dados capturados são então enviados tanto para um destino de memória quanto para um destino de arquivo para análise posterior.
Como você pode ver, a criação de uma Sessão de Evento segue a sintaxe DML padrão usada para criar, alterar ou excluir outros objetos no SQL Server. Cada componente da sessão, como o evento, predicado, ação e destino, é colorido para facilitar a identificação.
Com uma compreensão sólida desses conceitos principais, a criação de uma Sessão de Evento Estendida se torna muito mais fácil. Ao aproveitar o poder dos Eventos Estendidos, você pode obter insights valiosos sobre o comportamento de suas instâncias do SQL Server e solucionar problemas de desempenho com mais eficácia.
Para um resumo desta série sobre Eventos Estendidos, continue lendo aqui.