1. Introdução
1.1 O que são SQL Server Eventos prolongados?
SQL Server O Extended Events é um sistema leve de monitoramento de desempenho que permite que administradores e desenvolvedores coletem e analisem dados detalhados da atividade do servidor. Este sistema está integrado ao SQL Server O mecanismo de banco de dados fornece informações abrangentes sobre as operações normais e cenários de solução de problemas.
1.2 Por que usar eventos estendidos para monitoramento?
SQL Server O Extended Events oferece diversas vantagens importantes para o monitoramento e a solução de problemas de bancos de dados:
- Impacto mínimo no desempenho graças à arquitetura leve.
- Controle granular sobre a coleta de dados e filtragem de eventos.
- Coleta de dados personalizável, adaptada a necessidades específicas de monitoramento.
- Capacidade de capturar eventos de vários pacotes simultaneamente
- Recursos de filtragem flexíveis para focar em operações relevantes.
- Suporte para monitoramento de sistemas de produção sem comprometer a experiência do usuário.
- Monitoramento abrangente de métricas de desempenho
- Diagnóstico avançadoostRecursos de circuitos integrados para solução de problemas
- Manutenção de trilhas de auditoria para requisitos de conformidade
- Opções de análise de dados em tempo real e históricos
1.3 Eventos Prolongados vs. SQL Server Profiler
Embora o SQL Server Profiler Embora o monitoramento tradicional tenha sido uma ferramenta essencial, o MS SQL Extended Events oferece uma alternativa mais eficiente. O Extended Events consome menos recursos do sistema e oferece melhor escalabilidade para ambientes de produção.
SQL Server O Profiler agora está obsoleto e a Microsoft recomenda a migração para Eventos Estendidos para todas as atividades de monitoramento.
2. Compreendendo a Arquitetura de Eventos Estendidos
2.1 Componentes do mecanismo de eventos estendidos
O mecanismo de Eventos Estendidos consiste em vários componentes principais que trabalham em conjunto para capturar, processar e armazenar dados de eventos. Compreender esses componentes ajuda você a projetar soluções de monitoramento eficazes.
- Expedidor: O componente dispatcher coordena o fluxo de eventos das fontes de eventos para o mecanismo de Eventos Estendidos. Quando um evento é disparado, o dispatcher recebe a notificação e a encaminha para as sessões ativas que se inscreveram naquele tipo de evento específico.
- Buffer: Tempo dos amortecedoresrarO ily armazena dados de eventos na memória antes de escrever no tarO mecanismo de bufferização melhora o desempenho ao reduzir as operações de E/S. O tamanho do buffer e as configurações de gerenciamento podem ser ajustados para equilibrar o uso de memória com os requisitos de captura de dados.
- Sessão: Uma sessão define o escopo do monitoramento de eventos. Ela especifica quais eventos capturar, quais ações executar, quais predicados aplicar e onde armazenar os resultados. As sessões podem ser criadas, modificadas e encerradas.tarTed, e parou independentemente.
- TarObter instância: TarAs instâncias de obtenção representam os destinos de armazenamento para os dados de eventos capturados. Cada sessão pode gravar em uma ou mais instâncias. tarrecebe dados, como arquivos, buffers circulares ou contadores. TarObtém e armazena as informações do evento para análise posterior.
2.2 Pacotes de Eventos
SQL Server O Extended Events organiza a funcionalidade em pacotes. Cada pacote contém eventos, ações, tipos, predicados e outros elementos relacionados. tarobtém. Os pacotes comuns incluem sqlserver, sqlos e package0.
- O pacote sqlserver fornece eventos específicos do banco de dados, como consultas e transações.
- O pacote sqlos contém eventos do sistema operacional.
- O pacote0 oferece funcionalidades de uso geral utilizadas em todos os pacotes.
2.3 Tipos e Campos de Eventos
Eventos representam ocorrências dentro de SQL Server que você deseja monitorar. Cada tipo de evento possui campos predefinidos que capturam informações relevantes. Por exemplo, o evento sql_statement_completed inclui campos para duração, tempo de CPU, leituras e gravações.
Os eventos podem ser síncronos ou assíncronos. Os eventos síncronos são disparados durante a própria operação, enquanto os eventos assíncronos são disparados após a sua conclusão. Compreender as características dos eventos ajuda você a selecionar os eventos apropriados para suas necessidades de monitoramento.
2.4 ações
As ações adicionam suplementostarInformações sobre eventos capturados. Quando um evento é disparado, as ações associadas são executadas para coletar contexto adicional, como texto SQL, ID da sessão ou informações da pilha de chamadas.
As ações comuns incluem sql_text para capturar instruções de consulta, database_name para identificar o banco de dados e client_h.ostO nome serve para rastrear o servidor de origem. As ações fornecem contexto essencial para a resolução de problemas e análise.
2.5 Tarfica
TarO sistema determina como e onde os dados do evento são armazenados. SQL Server O Extended Events suporta múltiplos tarObtenha diversos tipos, incluindo:
- event_file para armazenamento em disco, fornecendo armazenamento persistente para análises detalhadas.
- O buffer circular (ring_buffer) para retenção baseada em memória oferece acesso rápido a eventos recentes com sobrecarga mínima.
- contador_de_eventos para contagem simples
- histograma para agrupamento
- emparelhamento para correlacionar eventos relacionados
2.6 Predicados (Filtros)
Os predicados filtram eventos com base em condições específicas, reduzindo o volume de dados capturados. Você pode filtrar por nome do banco de dados, nome do aplicativo, ID da sessão, limites de duração ou qualquer valor de campo do evento.
O uso eficaz de predicados minimiza o impacto no desempenho, capturando apenas os eventos relevantes. Predicados complexos combinam múltiplas condições usando operadores lógicos para criar critérios de filtragem precisos.
3. Estados e ciclo de vida da sessão de eventos estendidos
3.1 Estados da Sessão: CRIAR, ALTERAR e DESCARTAR
As sessões de Eventos Prolongados progridem por estados distintos:
- A instrução CREATE EVENT SESSION define uma nova sessão, mas não a cria.tarA sessão permanece em estado de suspensão até ser explicitamente ativada.
- A instrução ALTER EVENT SESSION modifica a configuração da sessão ou altera seu estado entre parado e ativo.tarted.
- A instrução DROP EVENT SESSION remove completamente a definição da sessão do servidor.
3.2 Conteúdo e características da sessão
Cada sessão contém uma coleção de eventos, ações, tarOs métodos `get` e `predicate` definem as capacidades de processamento e os predicados. As sessões possuem limites implícitos que definem seu escopo e comportamento. As opções de configuração controlam a alocação de memória, a retenção de eventos e a latência de despacho.
As características da sessão incluem se elas persistem entre diferentes resoluções de servidor.tarts, alocação máxima de memória e como lidam com a pressão de memória. Essas configurações impactam significativamente o comportamento da sessão e o consumo de recursos.
3.3 Limites e Pacotes de Sessão
Os limites da sessão definem as relações entre os eventos. tarOs dados são obtidos de diferentes pacotes. Eventos de um pacote podem desencadear ações de outro, proporcionando flexibilidade nas estratégias de coleta de dados.
Os relacionamentos entre pacotes permitem combinar eventos de múltiplas fontes em uma única sessão. Essa funcionalidade possibilita cenários de monitoramento abrangentes que englobam diferentes áreas. SQL Server subsistemas.
4. Criando sessões de eventos estendidas usando o SSMS
4.1 Pré-requisitos e Configuração
Antes de criar SQL Server Para sessões de Eventos Estendidos, certifique-se de ter as permissões apropriadas. Você precisa da permissão ALTER ANY EVENT SESSION para sessões com escopo de servidor ou da permissão CONTROL no banco de dados para sessões com escopo de banco de dados.
Verifique se SQL Server O Management Studio está instalado e conectado ao seu dispositivo. tarObtenha uma instância. Familiarize-se com os requisitos de monitoramento e identifique quais eventos e tarA melhor opção se adapta às suas necessidades.
4.2 Acessando eventos estendidos no Explorador de Objetos
Para acessar a interface de Eventos Estendidos no SSMS, siga estes passos:
- Abra SQL Server Estúdio de Gestão e conecte-se ao seu SQL Server instância.
- No Explorador de Objetos, expanda e Autônoma -> Eventos Estendidos.
- O nó Eventos Estendidos contém Sessões e PACOTES Pastas para gerenciar suas configurações de monitoramento.
4.3 Criar uma nova sessão
Para criar uma nova sessão:
-
- Clique com o botão direito do mouse no Sessões pasta sob Eventos Estendidos.
- Selecionar Nova Sessão Para abrir a caixa de diálogo de configuração. O conteúdo a seguir usará esse método para criar uma nova sessão.
Nota: A Assistente de Nova Sessão Também está disponível para uma experiência mais guiada.
4.3.1 Configuração Geral da Página
No Geral Página, configurar propriedades básicas da sessão:
- Insira um nome de sessão no Nome da sessão campo. Use nomes descritivos que indiquem a finalidade do monitoramento.
- Opcionalmente, selecione Start a sessão de eventos no servidor startubo Para ativar a sessão automaticamente.
- O modelo de sessão padrão é BlankVocê pode usar outros modelos se estiver usando uma configuração predefinida.
4.3.2 Configuração da página de eventos
O processo de Eventos Esta página permite selecionar quais eventos monitorar:
- Selecione os Eventos página da esquerda Selecione uma página painel.
- De acordo com o relatório Biblioteca de eventosraryNavegue pelos eventos disponíveis ou utilize a função de busca.
- Filtre os eventos digitando palavras-chave como "sql_statement_completed" para encontrar eventos relevantes.
- Selecione o evento desejado, como por exemplo, sql_statement_completed.
- Clique na seta para a direita para mover o evento para o Eventos selecionados Lista.
4.3.3 Configuração de armazenamento de dados
O processo de Armazenamento de dados A página define onde os dados do evento são armazenados:
- Selecione os Armazenamento de dados página da esquerda Selecione uma página painel.
- De acordo com o relatório Tarfica área, escolha uma tarSelecione o tipo na lista suspensa.
(1) arquivo_de_evento Tarter
O arquivo de evento tarO programa Get armazena dados em arquivos de disco com a extensão .xel:
- Selecionar arquivo_de_evento do tarObter lista suspensa de tipos.
- Especifique o caminho do arquivo, como por exemplo C:\temp\SuaSessão_Tarobter.xel.
- Configure as opções de rollover para gerenciar o espaço em disco, definindo o tamanho máximo do arquivo e a quantidade de arquivos.
- O processo de tarOs eventos de gravação são recebidos continuamente até que a sessão seja encerrada ou os limites de armazenamento sejam atingidos.
(2) buffer_anelar Tarter
O buffer circular tarO sistema armazena eventos na memória para acesso rápido sem necessidade de E/S de disco:
- Selecionar buffer_anelar como o tarobter tipo.
- Configure a alocação máxima de memória para o buffer.
- Entenda que eventos mais antigos são descartados quando o buffer fica cheio, tornando isso adequado para o monitoramento de atividades recentes.
(3) contador_de_eventos Tarter
O contador de eventos tarO comando `get` simplesmente conta as ocorrências de eventos sem armazenar dados detalhados. Isso proporciona uma sobrecarga mínima quando você precisa apenas de informações de frequência.
(4) histograma Tarter
O histograma tarAgrupa eventos por valor de campo específico, criando estatísticas de distribuição. Isso é útil para identificar padrões comuns ou valores de alta frequência.
(5) emparelhamento Tarter
O emparelhamento tarA obtenção de correlações entre eventos relacionados, como aquisição e liberação de bloqueios, permite a análise de operações pareadas e suas relações temporais.
4.3.4 Configurações Avançadas
O processo de Avançado Esta página fornece opções de configuração ao nível da sessão:
- Selecione os Avançado página da esquerda Selecione uma página painel.
- configurar Modo de retenção de eventos Controlar como os eventos são tratados sob pressão de memória.
- Conjunto Latência máxima de despacho Equilibrar o processamento em tempo real com o desempenho do sistema.
- configurar Tamanho máximo da memória e Tamanho máximo do evento com base nas suas necessidades de monitoramento.
- Selecionar Modo de partição de memória Para otimizar ambientes com um ou vários processadores.
4.4 Configurando filtros de eventos (predicados)
Os predicados reduzem o volume de dados filtrando eventos com base em critérios específicos. Para configurar os filtros:
- No Eventos Na página, selecione o evento que deseja filtrar, como "sql_statement_completed".
- Clique configurar Para abrir a caixa de diálogo de configuração do evento.
- Selecione os Filtro (Predicado) aba.
- De acordo com o relatório Campo No menu suspenso, escolha o campo que deseja usar como filtro, como por exemplo, a duração.
- Selecione um operador, como “>”.
- Insira o filtro Valor, como 1000000 (1 segundo).
- Adicione mais condições, se necessário.
4.5 Selecionando ações e campos de evento
Para cada evento, você pode selecionar os dados a serem coletados:
- No Eventos Na página, selecione o evento do qual deseja extrair os dados, como por exemplo, “sql_statement_completed”.
- Clique configurar Para abrir a caixa de diálogo de configuração do evento.
- Selecione os Campos Globais (Ações) aba.
- Selecione as ações para adicionar suplementos.tarInformações como database_name ou client_app_name.
- Reveja a Campos de Eventos Esta seção permite visualizar quais campos são capturados automaticamente.
- Limpe os campos desnecessários para reduzir o volume de dados.
4.6 StarSessões de planejamento e gerenciamento
Após configurar sua sessão, você pode starConecte-o e monitore seu funcionamento:
- Clique OK Para criar a sessão.
- No Explorador de Objetos, expanda o Sessões pasta para visualizar sua nova sessão.
- Clique com o botão direito do mouse no nome da sessão e selecione StarSessão t Para começar a registrar os eventos.
- Para visualizar os dados em tempo real, clique com o botão direito do mouse na sessão e selecione Veja os dados em tempo real..
- Encerre a sessão clicando com o botão direito do mouse e selecionando Parar sessão.
5. Criando sessões de eventos estendidas usando T-SQL
5.1 Sintaxe de CRIAÇÃO DE SESSÃO DE EVENTOS
A criação de sessões de eventos estendidas com T-SQL proporciona controle preciso e permite a criação de scripts para implantação automatizada. A instrução CREATE EVENT SESSION segue uma estrutura sintática específica.
A sintaxe básica inclui o nome da sessão, cláusulas ADD EVENT para cada evento e ADD. TARCláusulas GET para destinos de armazenamento e cláusulas WITH opcionais para configuração de sessão.
5.2 Criando uma sessão de evento básica
Uma sessão básica monitora eventos específicos e grava os resultados em um arquivo. tarEntenda. Veja como construir os componentes essenciais.
5.2.1 Definindo o nome e as opções da sessão
Start criando a sessão com um nome descritivo:
CREATE EVENT SESSION [SampleSession] ON SERVER
A cláusula ON SERVER cria uma sessão com escopo de servidor que persiste mesmo após alterações no banco de dados. Para o Banco de Dados SQL do Azure, use ON DATABASE para sessões com escopo de banco de dados.
5.2.2 Adicionando eventos com ADICIONAR EVENTO
Adicione eventos para capturar usando a cláusula ADD EVENT:
CREATE EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_statement_completed
Isso captura todas as instruções SQL concluídas. Você pode adicionar vários eventos incluindo cláusulas ADD EVENT adicionais.
5.2.3 Configurando ações de eventos
As ações coletam contexto adicional para cada evento. Adicione ações entre parênteses após o nome do evento:
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)
Este exemplo captura o texto SQL, o nome do banco de dados e o nome de usuário para cada instrução concluída.
5.2.4 Definição de predicados de eventos (cláusula WHERE)
Os predicados filtram eventos para reduzir o volume de dados. Utilize a cláusula WHERE na definição do evento:
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text)
WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)
Este filtro busca declarações com duração superior a 5 segundos (5,000,000 microssegundos).
5.3 Adicionando Evento Tarfica
TarDefine onde os dados do evento são armazenados e como são processados.
5.3.1 ADICIONAR TARSintaxe GET
Adicione tarobtém usando o ADD TARCláusula GET após todos os eventos serem definidos:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel'
)
O prefixo package0 indica o tarO comando get vem do pacote base.
5.3.2 Configurando Tarobter parâmetros
Cada tarO método `get` aceita parâmetros específicos. Para `event_file`, configure `filename`, `max_file_size` e `max_rollover_files`:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel',
max_file_size=(50),
max_rollover_files=(5)
)
Essa configuração cria arquivos de até 50 MB cada, mantendo até 5 arquivos por meio de rollover.
5.4 Opções e configurações da sessão
A cláusula WITH configura opções de nível de sessão que controlam o comportamento e o uso de recursos.
5.4.1 MAX_MEMORY e EVENT_RETENTION_MODE
Controle da alocação de memória e do tratamento de eventos sob pressão:
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)
As opções de EVENT_RETENTION_MODE incluem ALLOW_SINGLE_EVENT_LOSS para uso mínimo de memória, ALLOW_MULTIPLE_EVENT_LOSS para sobrecarga moderada e NO_EVENT_LOSS para retenção completa de dados no cost de potencial impacto no desempenho.
5.4.2 LATÊNCIA_MÁXIMA_DE_DESPACHO
Defina o tempo máximo que os eventos podem permanecer nos buffers antes de serem gravados. tarrecebe:
WITH (
MAX_DISPATCH_LATENCY=30 SECONDS
)
Valores mais baixos fornecem dados em tempo real no cost de aumento nas operações de entrada/saída.
5.4.3 MODO_DE_PARTIÇÃO_DE_MEMÓRIA
Otimize o particionamento de memória para sua configuração de hardware:
WITH (
MEMORY_PARTITION_MODE=PER_CPU
)
As opções incluem NONE para partição única, PER_NODE para sistemas NUMA e PER_CPU para máxima concorrência em sistemas com múltiplas CPUs.
5.5 StarSessões de interrupção, parada e alteração
Gerencie o estado e a configuração da sessão por meio de instruções ALTER EVENT SESSION.
5.5.1 ALTERAR SESSÃO DE EVENTO para Start/Parar
Staruma sessão após a criação:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;
Interromper uma sessão de corrida:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;
5.5.2 Modificando Sessões Existentes
Modificar a configuração da sessão enquanto estiver parada. Adicionar eventos:
ALTER EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_batch_completed;
Remover eventos:
ALTER EVENT SESSION [SampleSession] ON SERVER DROP EVENT sqlserver.sql_statement_completed;
5.5.3 Cancelamento de Sessões de Eventos
Remover completamente uma sessão com DROP EVENT SESSION:
DROP EVENT SESSION [SampleSession] ON SERVER;
A sessão deve ser encerrada antes de desistir.
6. Trabalhando com Eventos Tarentra em detalhes
6.1 arquivo_de_evento TarObter configuração
O arquivo de evento tarO Get oferece armazenamento persistente para dados de eventos com opções de configuração flexíveis.
6.1.1 Convenções de Caminho e Nomenclatura de Arquivos
Especifique o caminho completo e o nome do arquivo para os arquivos de evento:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel'
)
Use a extensão .xel para arquivos de log de eventos estendidos. Certifique-se de que... SQL Server A conta de serviço possui permissões de escrita no diretório especificado.
6.1.2 Rotação de Arquivos e Gerenciamento de Tamanho
Configure a rotação automática de arquivos para gerenciar o espaço em disco:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel',
max_file_size=(50),
max_rollover_files=(10)
)
Quando um arquivo atinge 50 MB, SQL Server O recurso Eventos Estendidos cria um novo arquivo com um sufixo incremental. Após atingir 10 arquivos, o arquivo mais antigo é sobrescrito.
6.1.3 Leitura de dados do arquivo de eventos
Consultar dados do arquivo de eventos usando a função sys.fn_xe_file_tarFunção get_read_file:
SELECT
event_data,
file_name,
file_offset
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
O padrão curinga lê todos os arquivos associados à sessão.
6.2 buffer_anelar TarObter uso
O buffer circular tarO sistema armazena eventos na memória para acesso rápido às atividades recentes.
6.2.1 Armazenamento de eventos baseado em memória
Configure o buffer circular para armazenamento baseado em memória:
ADD TARGET package0.ring_buffer
Os eventos permanecem acessíveis apenas enquanto a sessão estiver ativa e SQL Server está em execução. Os dados são lost quando a sessão é interrompida ou o servidor retornatarts.
6.2.2 Tamanho e configuração do buffer
Controlar a alocação de memória para o buffer circular:
ADD TARGET package0.ring_buffer(
SET max_memory=(4096)
)
Especifique a memória em KB. Quando o buffer estiver cheio, os eventos mais antigos serão descartados usando uma abordagem FIFO (primeiro a entrar, primeiro a sair).
6.2.3 Consultando dados do buffer circular
Aceda aos dados do buffer circular através das DMVs:
SELECT
CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer';
O processo de target_data contém informações de eventos formatadas em XML.
6.3 contador_de_eventos Tarter
O contador de eventos tarO método `get` oferece uma contagem simples sem a necessidade de armazenamento detalhado de dados:
ADD TARGET package0.event_counter
Esta tarObtenha a frequência de eventos de rastreamento com sobrecarga mínima, útil para monitoramento de alto volume onde apenas as contagens importam.
6.4 histograma Tarter
O histograma tarObter eventos de grupos por valores de campo:
ADD TARGET package0.histogram(
SET filtering_event_name=N'sqlserver.sql_statement_completed',
source_type=0,
source=N'database_name'
)
Essa configuração cria um histograma que mostra a distribuição de eventos entre os bancos de dados.
6.5 emparelhamento Tarter
O emparelhamento tarObter correlações entre eventos relacionados, como aquisições de bloqueios e liberações:
ADD TARGET package0.pair_matching(
SET begin_event=N'sqlserver.lock_acquired',
end_event=N'sqlserver.lock_released',
begin_matching_columns=N'resource_type',
end_matching_columns=N'resource_type'
)
Isso possibilita a análise de operações em pares e suas durações.
7. Visualização e análise de dados de eventos estendidos
7.1 Usando o SSMS para visualizar dados em tempo real
SQL Server O Management Studio fornece uma interface gráfica para visualizar dados de Eventos Estendidos em tempo real:
- No Explorador de Objetos, expanda e Autônoma -> Eventos Estendidos -> Sessões.
- Clique com o botão direito do mouse na sua sessão ativa.
- Selecionar Veja os dados em tempo real. Para abrir o visualizador de dados em tempo real.
- Os eventos aparecem na grade à medida que ocorrem.
- Clique em eventos individuais para visualizar os valores detalhados dos campos no painel de detalhes.
- Utilize os filtros da barra de ferramentas para focar em tipos de eventos ou valores de campos específicos.
7.2 Consultando dados de arquivos de eventos com T-SQL
As consultas T-SQL proporcionam uma análise flexível dos dados de eventos capturados.
7.2.1 sys.fn_xe_file_tarFunção get_read_file
Leia os dados do arquivo de eventos usando esta função do sistema:
SELECT
object_name AS EventName,
CAST(event_data AS XML) AS EventData,
file_name,
file_offset,
timestamp_utc
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
A função retorna uma linha por evento com detalhes formatados em XML.
7.2.2 Análise de dados de eventos XML
Extrair valores específicos dos dados de eventos XML:
SELECT
event_data.value('(event/@name)[1]', 'VARCHAR(50)') AS EventName,
event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS Timestamp,
event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
event_data.value('(event/data[@name="statement"]/value)[1]', 'VARCHAR(MAX)') AS Statement
FROM (
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
) AS EventData;
As expressões XQuery extraem valores de campos individuais da estrutura XML.
7.2.3 Convertendo dados de eventos em tabelas
Criar conjuntos de resultados estruturados a partir de dados de eventos:
WITH EventData AS (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
)
SELECT
EventXML.value('(event/@name)[1]', 'VARCHAR(100)') AS EventName,
EventXML.value('(event/data[@name="cpu_time"]/value)[1]', 'BIGINT') AS CPUTime,
EventXML.value('(event/data[@name="physical_reads"]/value)[1]', 'BIGINT') AS PhysicalReads,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM EventData;
7.3 Consultando dados do buffer circular
Extrair dados do buffer circular tarrecebe:
SELECT
n.value('(@name)[1]', 'VARCHAR(50)') AS EventName,
n.value('(@timestamp)[1]', 'DATETIME2') AS Timestamp,
n.value('(data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
n.value('(action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('//event') AS q(n);
7.4 Visões do sistema para eventos estendidos
SQL Server Oferece diversas DMVs (Visualizações de Dados de Domínio) e visualizações de catálogo para gerenciar e monitorar sessões de Eventos Estendidos.
7.4.1 sys.server_event_sessions
Visualizar definições de sessão armazenadas no servidor:
SELECT
name,
event_retention_mode_desc,
max_dispatch_latency,
max_memory,
max_event_size,
memory_partition_mode_desc
FROM sys.server_event_sessions;
Esta visualização do catálogo mostra os detalhes de configuração de todas as sessões definidas.
7.4.2 sys.dm_xe_sessions
Veja as sessões ativas no momento:
SELECT
name,
create_time,
total_regular_buffers,
regular_buffer_size,
total_large_buffers,
large_buffer_size
FROM sys.dm_xe_sessions;
Esta DMV fornece informações de tempo de execução sobre sessões de Eventos Estendidos ativas.
7.4.3 sys.dm_xe_session_tarfica
Consultar tarAssocia-se às sessões ativas:
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
t.execution_duration_ms
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
7.4.4 Outros Departamentos de Veículos Motorizados (DMVs) Úteis
Visualizações adicionais fornecem informações completas sobre a sessão:
- sys.dm_xe_session_events: Lista os eventos em sessões ativas.
- sys.dm_xe_session_event_actions: Exibe as ações configuradas para eventos de sessão.
- sys.dm_xe_objects: Cataloga todos os eventos, ações e objetos disponíveis. tarfica
- sys.dm_xe_object_columns: Campos de detalhes disponíveis para cada tipo de evento
- sys.dm_xe_packages: Lista todos os pacotes de eventos estendidos.
8. Casos de uso práticos e exemplos
8.1 Monitoramento da Execução de Instruções SQL
O acompanhamento da execução de instruções SQL fornece informações sobre padrões de consulta e características de desempenho.
8.1.1 Rastreamento de eventos sql_statement_completed
Crie uma sessão para monitorar instruções SQL concluídas:
CREATE EVENT SESSION [QueryMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.client_hostname,
sqlserver.username
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryMonitoring.xel',
max_file_size=(100),
max_rollover_files=(5)
)
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
STARTUP_STATE=OFF
);
ALTER EVENT SESSION [QueryMonitoring] ON SERVER STATE = START;
8.1.2 Filtragem por Banco de Dados ou Aplicativo
Concentre-se em bancos de dados ou aplicativos específicos usando predicados:
CREATE EVENT SESSION [AppSpecificMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.client_app_name)
WHERE (
[sqlserver].[database_name] = N'YourDatabase'
AND [sqlserver].[client_app_name] LIKE N'YourApplication%'
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\AppMonitoring.xel'
);
8.2 Captura de informações sobre impasses
A análise de impasses exige a coleta de informações detalhadas sobre transações conflitantes.
8.2.1 xml_deadlock_report Event
Crie uma sessão para capturar gráficos completos de impasse:
CREATE EVENT SESSION [DeadlockMonitoring] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Deadlocks.xel'
)
WITH (STARTUP_STATE=ON);
ALTER EVENT SESSION [DeadlockMonitoring] ON SERVER STATE = START;
8.2.2 Analisando Gráficos de Impasse
Extrair e analisar informações sobre impasses:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS DeadlockTime,
EventXML.query('.') AS DeadlockGraph
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\Deadlocks*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'xml_deadlock_report';
O gráfico de impasse contém detalhes sobre processos, recursos e seleção da vítima.
8.3 Rastreamento de problemas de desempenho de consultas
Identifique consultas com baixo desempenho usando métricas de duração e consumo de recursos.
8.3.1 Detecção de consultas de longa duração
Capturar consultas que excedam limites de duração específicos:
CREATE EVENT SESSION [LongRunningQueries] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.plan_handle
)
WHERE ([duration] > 5000000) -- 5 seconds in microseconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\LongQueries.xel'
);
8.3.2 Análise do Plano de Execução
Capturar planos de consulta para análise de desempenho:
CREATE EVENT SESSION [QueryPlans] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan(
ACTION(
sqlserver.sql_text,
sqlserver.database_name
)
WHERE ([duration] > 10000000) -- 10 seconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryPlans.xel',
max_file_size=(200)
);
8.4 Monitoramento de eventos de login e segurança
Monitore as atividades de autenticação e autorização para fins de auditoria de segurança.
8.4.1 Rastreamento de sucesso e falha de login
Monitore as tentativas de login bem-sucedidas e as tentativas com falha:
CREATE EVENT SESSION [LoginMonitoring] ON SERVER
ADD EVENT sqlserver.login(
ACTION(
sqlserver.client_hostname,
sqlserver.client_app_name
)
),
ADD EVENT sqlserver.login_failed(
ACTION(
sqlserver.client_hostname
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Logins.xel'
)
WITH (STARTUP_STATE=ON);
8.4.2 Alterações de permissão
Monitore as alterações nas permissões de segurança:
CREATE EVENT SESSION [SecurityChanges] ON SERVER
ADD EVENT sqlserver.server_principal_management_event,
ADD EVENT sqlserver.database_principal_management_event,
ADD EVENT sqlserver.database_permission_change_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SecurityAudit.xel'
);
8.5 Monitoramento em nível de banco de dados
Monitorar operações específicas do banco de dados e alterações de estado.
8.5.1 Eventos de backup e restauração
Acompanhe as operações de backup e restauração:
CREATE EVENT SESSION [BackupMonitoring] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace,
ADD EVENT sqlserver.databases_backup_restore_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\BackupRestore.xel'
);
8.5.2 Alterações no estado do banco de dados
Monitorar transições de estado do banco de dados:
CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER ADD EVENT sqlserver.database_started, ADD EVENT sqlserver.database_stopped ADD TARGET package0.ring_buffer;
8.6 Detecção de Corrupção e Problemas de Integridade do Banco de Dados
SQL Server O Extended Events oferece recursos de alerta antecipado para detectar possíveis corrupções no banco de dados, permitindo intervenção proativa antes que os problemas se agravem.
8.6.1 Eventos-chave para a detecção de corrupção
Diversos eventos sinalizam possível corrupção ou problemas de entrada/saída.
8.6.1.1 error_reported Evento para erros críticos
O evento error_reported captura todos os SQL Server erros, incluindo números de erro relacionados à corrupção:
ADD EVENT sqlserver.error_reported(
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825, 832, 855, 856)
)
)
O erro 823 indica erros de E/S, o 824 sinaliza erros de consistência lógica e o 825 relata sucessos em tentativas de leitura que podem indicar problemas de hardware.
8.6.1.2 database_suspect_data_page Event
Este evento é acionado quando SQL Server encontra uma página suspeita:
ADD EVENT sqlserver.database_suspect_data_page
As páginas suspeitas indicam potencial corrupção e são registradas na tabela msdb.dbo.suspect_pages.
8.6.1.3 Evento errorlog_write
Capturar entradas escritas para o SQL Server registro de erros:
ADD EVENT sqlserver.errorlog_written(
WHERE ([severity] >= (16))
)
8.6.2 Criação de uma Sessão de Monitoramento da Corrupção
Estabelecer uma sessão abrangente para detecção e monitoramento da corrupção.
8.6.2.1 Filtragem de números de erro de corrupção (823, 824, 825)
Crie uma tarSessão realizada com foco em indicadores de corrupção:
CREATE EVENT SESSION [CorruptionDetection] ON SERVER
ADD EVENT sqlserver.error_reported(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
WHERE (
[error_number] IN (823, 824, 825, 832, 855, 856)
OR [severity] >= (20)
)
),
ADD EVENT sqlserver.database_suspect_data_page(
ACTION(
sqlserver.database_name
)
)
8.6.2.2 Definição de Níveis de Gravidade Adequados
Incluir erros de alta gravidade que possam indicar corrupção:
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825)
)
A gravidade 20 e superior indica problemas sistêmicos que geralmente estão relacionados à corrupção.
8.6.2.3 Configurando o arquivo de eventos TarReceba alertas
Armazene eventos de corrupção para análise e alerta:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\CorruptionMonitoring.xel',
max_file_size=(50),
max_rollover_files=(10)
)
WITH (
STARTUP_STATE=ON,
MAX_DISPATCH_LATENCY=5 SECONDS
);
ALTER EVENT SESSION [CorruptionDetection] ON SERVER STATE = START;
8.6.3 Análise de Dados de Eventos de Corrupção
Extrair e interpretar eventos relacionados à corrupção a partir dos dados coletados.
8.6.3.1 Identificação de Páginas Suspeitas
Consulta para eventos database_suspect_data_page:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS EventTime,
EventXML.value('(event/data[@name="database_id"]/value)[1]', 'INT') AS DatabaseID,
EventXML.value('(event/data[@name="file_id"]/value)[1]', 'INT') AS FileID,
EventXML.value('(event/data[@name="page_id"]/value)[1]', 'BIGINT') AS PageID,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'database_suspect_data_page';
8.6.3.2 Extraindo detalhes e contexto do erro
Analise os eventos error_reported em busca de padrões de corrupção:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS ErrorTime,
EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') AS ErrorNumber,
EventXML.value('(event/data[@name="severity"]/value)[1]', 'INT') AS Severity,
EventXML.value('(event/data[@name="message"]/value)[1]', 'VARCHAR(MAX)') AS ErrorMessage,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'error_reported'
AND EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') IN (823, 824, 825);
8.6.4 Integração com DBCC CHECKDB
Utilize os dados de Eventos Estendidos como guia. DBCC CHECKDB execução.
8.6.4.1 Acionando o DBCC CHECKDB com base em eventos
Quando forem detectados eventos de corrupção, execute o DBCC CHECKDB para uma validação completa:
-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;
O recurso Extended Events fornece um alerta antecipado, enquanto o DBCC CHECKDB realiza uma validação completa.
8.6.4.2 Fluxos de trabalho automatizados de resposta à corrupção
Implemente respostas automatizadas monitorando o arquivo de eventos:
- configurar SQL Server Tarefa do agente: consultar periodicamente o arquivo de eventos de monitoramento de corrupção.
- Quando forem detectados eventos de corrupção, execute o DBCC CHECKDB no banco de dados afetado.
- Enviar alertas por e-mail aos DBAs com detalhes do evento e resultados do DBCC CHECKDB.
- Registre as informações em uma tabela de monitoramento centralizada para análise de tendências.
8.6.4.3 Equilibrando o monitoramento proativo com o desempenho
O recurso Extended Events oferece detecção de corrupção com baixa sobrecarga em comparação com a execução frequente do DBCC CHECKDB:
- Execute eventos estendidos continuamente para detecção de corrupção em tempo real.
- Execute o DBCC CHECKDB somente quando aparecerem indicadores de corrupção.
- Agende verificações regulares do DBCC CHECKDB durante as janelas de manutenção.
- Use Eventos Estendidos para identificar quais bancos de dados exigem atenção imediata.
Essa abordagem proporciona monitoramento proativo sem o consumo significativo de recursos exigido por verificações de integridade constantes.
8.6.4.4 Reparar Banco de Dados Corrompido
Se forem detectadas corrupções no banco de dados, você pode usar o comando DBCC CHECKDB para corrigir corrupções menores. Se isso falhar, você pode tentar usar uma solução de terceiros. ferramenta de recuperação de banco de dados SQL, que geralmente oferece uma taxa de recuperação mais alta em bancos de dados gravemente corrompidos.
9. Eventos estendidos com escopo de servidor versus eventos estendidos com escopo de banco de dados
9.1 Sessões de eventos com escopo de servidor
Sessões com escopo de servidor monitoram a atividade em toda a rede. SQL Server instância. Essas sessões são criadas com a cláusula ON SERVER e persistem no banco de dados mestre.
CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\ServerWide.xel'
);
As sessões com escopo de servidor capturam eventos de todos os bancos de dados e são adequadas para monitoramento em nível de instância.
9.2 Sessões de eventos com escopo de banco de dados (Banco de Dados SQL do Azure)
As sessões com escopo de banco de dados são limitadas a um único banco de dados e são usadas principalmente no Banco de Dados SQL do Azure, onde o acesso em nível de servidor é restrito:
CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'DatabaseMonitoring.xel'
);
No Banco de Dados SQL do Azure, os arquivos de eventos são armazenados no Armazenamento de Blobs do Azure, em vez de nos sistemas de arquivos locais.
9.3 Diferenças e casos de uso
Sessões com escopo de servidor fornecem monitoramento abrangente em todos os bancos de dados, mas exigem permissões elevadas. Sessões com escopo de banco de dados oferecem isolamento e são apropriadas para monitorar aplicativos ou locatários específicos.
Use sessões com escopo de servidor para monitoramento centralizado, solução de problemas de desempenho em vários bancos de dados e auditoria de segurança. Use sessões com escopo de banco de dados no Banco de Dados SQL do Azure, em ambientes multilocatários ou ao delegar responsabilidades de monitoramento para equipes de aplicativos.
10. Eventos estendidos no Banco de Dados SQL do Azure
10.1 Considerações específicas do Azure
O Banco de Dados SQL do Azure implementa Eventos Estendidos com algumas diferenças em relação à versão local. SQL ServerPor padrão, as sessões têm escopo de banco de dados e o armazenamento de arquivos de eventos usa o Armazenamento de Blobs do Azure em vez de sistemas de arquivos locais.
A autenticação no Armazenamento de Blobs do Azure requer um token SAS configurado no arquivo de evento. tarAs strings de conexão fazem referência à conta de armazenamento e ao contêiner onde os arquivos de eventos estão armazenados.
10.2 Disponível Tarentra no Azure
O Banco de Dados SQL do Azure oferece suporte a esses eventos estendidos. tarrecebe:
- event_file: Grava no Armazenamento de Blobs do Azure
- ring_buffer: Armazenamento baseado em memória com o mesmo comportamento que o armazenamento local.
- event_counter: Conta as ocorrências de eventos
O arquivo de evento tarO método `get` requer configuração com as credenciais do Armazenamento de Blobs do Azure:
ADD TARGET package0.event_file(
SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)
10.3 Criação de sessões com escopo de banco de dados
Criar uma sessão no Banco de Dados SQL do Azure:
CREATE EVENT SESSION [AzureMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB);
ALTER EVENT SESSION [AzureMonitoring] ON DATABASE STATE = START;
As sessões com escopo de banco de dados no Azure se comportam de maneira semelhante às sessões com escopo de servidor em ambientes locais, mas com escopo limitado ao banco de dados atual.
11. Melhores Práticas e Otimização de Desempenho
11.1 Minimizar o impacto no desempenho
Os Eventos Estendidos são projetados para minimizar a sobrecarga, mas uma configuração inadequada pode afetar o desempenho. Siga estas diretrizes:
- Use predicados específicos para filtrar eventos em vez de capturar tudo.
- Evite coletar ações desnecessárias que aumentam a sobrecarga de processamento.
- Escolha apropriado taré baseado nas necessidades de retenção de dados
- Defina tamanhos de buffer e latências de despacho razoáveis.
- Monitore o consumo de recursos da sessão usando DMVs
11.2 Escolhendo os Eventos e Filtros Adequados
Selecione eventos que atendam diretamente aos seus objetivos de monitoramento. Evite eventos de alta frequência, a menos que sejam necessários, e sempre aplique predicados para reduzir o volume de dados.
Por exemplo, em vez de capturar todos os eventos sql_statement_completed, filtre por bancos de dados específicos ou limites de duração:
WHERE (
[sqlserver].[database_name] = N'ProductionDB'
AND [duration] > 1000000
)
11.3 TarObtenha as diretrizes de seleção.
Escolha tarOs resultados são baseados nos seus requisitos de análise:
- Utilize o arquivo event_file para análises históricas detalhadas e retenção a longo prazo.
- Use o buffer circular para monitoramento em tempo real com impacto mínimo de E/S.
- Use `event_counter` quando apenas a frequência for importante.
- Utilize o histograma para análise de distribuição.
- Utilize o método pair_matching para análise de eventos correlacionados.
11.4 Recomendações de Configuração de Sessão
Configure as sessões com limites de recursos adequados:
- Defina MAX_MEMORY com base no volume de eventos esperado e nos recursos do servidor.
- Use ALLOW_SINGLE_EVENT_LOSS para minimizar a sobrecarga em most cenários
- Defina MAX_DISPATCH_LATENCY para equilibrar as necessidades de tempo real com o desempenho.
- Utilize o particionamento de memória PER_CPU em sistemas multiprocessadores.
- Evite STARTUP_STATE=ON, a menos que seja necessário monitoramento contínuo.
11.5 Gerenciando o tamanho e a retenção de arquivos de eventos
Configure a rotação de arquivos para evitar o uso ilimitado do disco:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Session.xel',
max_file_size=(100),
max_rollover_files=(10)
)
Essa configuração armazena aproximadamente 1 GB de dados de eventos (10 arquivos × 100 MB). Ajuste de acordo com suas necessidades de retenção e espaço de armazenamento disponível.
12. Solução de problemas de eventos prolongados
12.1 Problemas e soluções comuns
Problemas comuns com Eventos Estendidos incluem sessões que não capturam dados, degradação de desempenho e arquivos. tarApresento problemas e comportamentos inesperados durante a sessão.
12.2 Sessão não captura dados
Se uma sessão não estiver capturando os eventos esperados:
- Verifique se a sessão é started usando sys.dm_xe_sessions.
- Verifique os predicados para garantir que eles não filtrem todos os eventos.
- Confirme se os eventos estão sendo disparados pelo ritmo.rarremovendo filtros.
- Verifique as permissões para garantir que você tenha acesso para visualizar os dados da sessão.
- Verifique se tarA configuração obtida está correta e é gravável.
SELECT name, create_time FROM sys.dm_xe_sessions WHERE name = 'YourSessionName';
12.3 Degradação de desempenho
Se os Eventos Prolongados causarem problemas de desempenho:
- Adicionar predicados para reduzir o volume de eventos.
- Remova ações desnecessárias que coletam suplementos.tare dados.
- Aumente o valor de MAX_DISPATCH_LATENCY para reduzir a frequência de escrita.
- Altere EVENT_RETENTION_MODE para ALLOW_SINGLE_EVENT_LOSS.
- Considere usar `ring_buffer` em vez de `event_file` para eventos de alta frequência.
Arquivo 12.4 TarObtenha problemas
Envie o tarOs problemas geralmente estão relacionados a permissões ou espaço em disco:
- Verifique o SQL Server A conta de serviço tem permissões de gravação para o tarobter diretório.
- Certifique-se de que haja espaço suficiente em disco.
- Verifique se o caminho especificado existe e está acessível.
- Verifique a configuração de rotação de arquivos se os arquivos não estiverem sendo rotacionados conforme o esperado.
12.5 Depuração com visualizações do sistema
Utilize os serviços do Detran para diagnosticar problemas relacionados a eventos prolongados:
-- Check session status
SELECT s.name, s.create_time, s.total_regular_buffers, s.total_large_buffers
FROM sys.dm_xe_sessions AS s;
-- View session targets and their status
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
CAST(t.target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
-- Check for dropped events
SELECT s.name, s.dropped_event_count, s.dropped_buffer_count
FROM sys.dm_xe_sessions AS s;
13. Tópicos Avançados
13.1 Criação de Pacotes de Eventos Personalizados
Usuários avançados podem criar pacotes de eventos personalizados para ampliar o escopo. SQL Server Funcionalidade de Eventos Estendidos. Isso requer desenvolvimento em C++ e integração com o SQL Server estrutura de extensibilidade.
Os pacotes personalizados permitem o monitoramento de eventos específicos de aplicativos ou a integração de sistemas de monitoramento de terceiros com a infraestrutura do Extended Events.
13.2 Modelos de Sessão de Evento
O SSMS fornece modelos integrados para cenários comuns de monitoramento. Acesse os modelos ao criar novas sessões por meio do assistente:
- Na caixa de diálogo Nova Sessão, clique em Modelo suspenso.
- Selecione entre os modelos disponíveis, como Rastreamento de Detalhes da Consulta ou Saúde do Sistema.
- Modifique o modelo para que se adapte às suas necessidades específicas.
13.3 Integração com Soluções de Monitoramento
Os dados de Eventos Estendidos podem alimentar soluções de monitoramento empresarial:
- Exportar dados de eventos para sistemas de registro centralizados
- Analisar arquivos de eventos e carregar dados em bancos de dados de monitoramento.
- Crie dashboards personalizados usando ferramentas de BI.
- Acione alertas com base em padrões de eventos específicos.
- Correlacionar SQL Server eventos com métricas de aplicação e infraestrutura
13.4 Automação e Agendamento
Automatize a gestão de eventos prolongados usando SQL Server Agente:
- Criar empregos para starinterromper/parar sessões durante janelas de tempo específicas
- Análise e relatório de arquivos de eventos agendados
- Implemente políticas de retenção de dados arquivando ou excluindo arquivos de eventos antigos.
- Automatize a resposta a condições detectadas, como problemas de desempenho ou eventos de segurança.
14. Migração de SQL Server Profiler
14.1 SQL Server Mapeamento de eventos do Profiler para eventos estendidos
A Microsoft fornece mapeamento entre SQL Server Profiler Eventos e Eventos Estendidos. Mapeamentos comuns incluem:
- SQL:BatchCompleted -> sql_batch_completed
- SQL:Lotestarting -> sql_batch_starting
- SQL:StmtCompleted -> sql_statement_completed
- SQL:StmtStarting -> declaração_sqltarting
- Gráfico de impasse -> relatório_xml_deadlock
- Login de auditoria -> login
- Auditoria de Logout -> sair
14.2 Convertendo Definições de Rastreamento
Converter existente SQL Server O Profiler rastreia sessões de Eventos Estendidos identificando eventos equivalentes e configurando predicados apropriados. O SSMS oferece suporte para conversões comuns.
Revise os filtros de rastreamento e converta-os em predicados de Eventos Estendidos. As ações em Eventos Estendidos substituem as colunas de rastreamento de SQL Server Analisador.
14.3 Comparação de desempenho
Os eventos prolongados oferecem um desempenho significativamente melhor do que SQL Server Profiler. Estudos de benchmark mostram que Eventos Estendidos consomem menos ciclos de CPU e têm menor impacto na taxa de transferência de transações.
Os Eventos Estendidos utilizam processamento assíncrono e gerenciamento de memória otimizado, enquanto SQL Server O Profiler depende da captura síncrona de eventos que bloqueia até que o processamento do rastreamento seja concluído.
15. Conclusão
15.1 Resumo dos principais conceitos
SQL Server O Extended Events oferece uma estrutura poderosa e leve para monitoramento e solução de problemas. SQL ServerA arquitetura consiste em eventos, ações, predicados, tarobtém informações e sessões que trabalham juntas para capturar a atividade relevante do servidor.
As sessões podem ser criadas usando o SSMS ou T-SQL, oferecendo flexibilidade tanto para a resolução de problemas pontuais quanto para o monitoramento automatizado. Múltiplas tarOs tipos de obtenção suportam diferentes abordagens de análise, desde o monitoramento em tempo real com ring_buffer até a análise histórica com event_file.
O Extended Events oferece desempenho superior em comparação com SQL Server O Profiler oferece recursos de monitoramento mais abrangentes. O sistema permite que administradores e desenvolvedores de banco de dados diagnostiquem problemas, otimizem o desempenho, aprimorem a segurança e mantenham a conformidade.
15.2 Próximos passos e recursos adicionais
Para continuar desenvolvendo seu SQL Server Experiência em XEvents:
- Implemente eventos estendidos em ambientes de teste para obter experiência prática.
- Consulte a documentação da Microsoft para obter catálogos de eventos completos e uma referência de sintaxe detalhada.
- Cadastra-se SQL Server fóruns comunitários para aprender com as experiências de outras pessoas
- Explore cenários avançados, como pacotes personalizados e integração com plataformas de monitoramento.
- Desenvolva uma bibliotecarary de modelos de sessão para cenários de monitoramento comuns
16 Seção de Perguntas Frequentes
P: O que são SQL Server Eventos prolongados?
A: SQL Server Extended Events é um sistema leve de monitoramento de desempenho integrado ao SQL Server Mecanismo de banco de dados que captura informações detalhadas sobre as operações do servidor com sobrecarga mínima.
P: Em que diferem os Eventos Prolongados de SQL Server Criador de perfil?
A: Os Eventos Estendidos oferecem melhor desempenho, menor sobrecarga e configuração mais flexível do que SQL Server Analisador. SQL Server O Profiler está obsoleto e a Microsoft recomenda o uso de Eventos Estendidos para todas as tarefas de monitoramento.
P: Os eventos prolongados podem ter impacto? SQL Server desempenho?
A: Quando configurados corretamente com predicados e limites de recursos apropriados, os Eventos Estendidos têm um impacto mínimo no desempenho. Uma configuração inadequada, sem filtragem, pode afetar o desempenho.
P: Quais permissões são necessárias para criar sessões de Eventos Estendidos?
A: Você precisa da permissão ALTER ANY EVENT SESSION para sessões com escopo de servidor ou da permissão CONTROL no banco de dados para sessões com escopo de banco de dados.
P: Como faço para visualizar os dados de Eventos Estendidos?
R: Usar SQL Server Visualizador de dados em tempo real do Management Studio, consulte arquivos de eventos com sys.fn_xe_file_target_read_file ou consultar dados do buffer circular por meio de DMVs.
P: Os Eventos Estendidos conseguem detectar corrupção de banco de dados?
R: Sim, os Eventos Estendidos podem capturar erros relacionados à corrupção (823, 824, 825) e eventos de página suspeitos, fornecendo um alerta antecipado para possíveis problemas de corrupção.
P: Qual é a diferença entre eventos, ações e predicados?
A: Eventos são ocorrências que você deseja monitorar. Ações adicionam informações complementares.tarInformações sobre eventos capturados. Predicados filtram eventos com base em condições para reduzir o volume de dados.
P: Como faço para monitorar consultas de aplicativos ou bancos de dados específicos?
A: Utilize predicados na configuração do seu evento para filtrar por nome_do_banco_de_dados, nome_do_aplicativo_cliente ou outros campos relevantes.
P: O que tarDevo usar o método `gets` para Eventos Estendidos?
A: Utilize `event_file` para armazenamento persistente e análise histórica, `ring_buffer` para monitoramento em tempo real com baixa sobrecarga, `event_counter` para rastreamento de frequência simples e `histogram` para análise de distribuição.
P: Os eventos estendidos estão disponíveis no Banco de Dados SQL do Azure?
R: Sim, o Banco de Dados SQL do Azure oferece suporte a Eventos Estendidos com escopo de banco de dados, com arquivos de eventos armazenados no Armazenamento de Blobs do Azure.
P: Como posso solucionar problemas em uma sessão de Eventos Estendidos que não está capturando dados?
A: Verifique se a sessão está ativa.tarTed, verifique se os predicados não estão filtrando todos os eventos, confirme. tarObtenha a configuração e revise as permissões usando as DMVs do sistema.
P: Posso automatizar a gestão de Eventos Prolongados?
A: Sim, use SQL Server Vagas de agente para starInterromper sessões, analisar arquivos de eventos, implementar políticas de retenção e responder às condições detectadas.
Referências
- S rápidotart: Eventos Estendidos em SQL Server – Microsoft Learn
- Visão geral de eventos estendidos – Microsoft Learn
- SQL Server Sessões de Eventos Prolongados – Microsoft Learn
- Tarrecebe para Eventos Prolongados em SQL Server – Microsoft Learn
- SQL Server Mecanismo de Eventos Estendidos – Microsoft Learn
- SQL Server Profiler: Guia Completo
- DBCC CHECKDB: Guia Completo
- DataNumen SQL Recovery
Sobre o autor
Yuan Sheng é um administrador de banco de dados sênior (DBA) com mais de 10 anos de experiência em SQL Server ambientes e gerenciamento de bancos de dados corporativos. Ele solucionou com sucesso centenas de cenários de recuperação de bancos de dados em organizações de serviços financeiros, saúde e manufatura.
Yuan é especialista em SQL Server recuperação de banco de dados, soluções de alta disponibilidadee otimização de desempenho. Sua vasta experiência prática inclui o gerenciamento de bancos de dados de vários terabytes e a implementação de... Grupos de Disponibilidade Always One desenvolvendo estratégias automatizadas de backup e recuperação para sistemas de negócios de missão crítica.
Por meio de sua experiência técnica e abordagem prática, Yuan se concentra na criação de guias abrangentes que ajudam administradores de banco de dados e profissionais de TI a resolver problemas complexos. SQL Server desafios de forma eficiente. Ele se mantém atualizado com as últimas SQL Server lançamentos e as tecnologias de banco de dados em evolução da Microsoft, testando regularmente cenários de recuperação para garantir que suas recomendações reflitam as melhores práticas do mundo real.
Tem dúvidas sobre SQL Server recuperação ou precisa de orientação adicional para solução de problemas de banco de dados? Yuan dá as boas-vindas comentários e sugestões para melhorar esses recursos técnicos.

















