Comparte ahora:
Índice hide
8. Casos prácticos y ejemplos

1. Introducción

1.1 ¿Qué son? SQL Server ¿Eventos prolongados?

SQL Server Extended Events es un sistema ligero de monitorización del rendimiento que permite a los administradores y desarrolladores recopilar y analizar datos detallados de la actividad del servidor. Este sistema está integrado en SQL Server Motor de base de datos que proporciona información exhaustiva tanto sobre el funcionamiento normal como sobre los escenarios de resolución de problemas.

1.2 ¿Por qué utilizar eventos extendidos para la monitorización?

SQL Server Los eventos extendidos ofrecen varias ventajas convincentes para la monitorización y la resolución de problemas de bases de datos:

  • Impacto mínimo en el rendimiento con una arquitectura ligera
  • Control granular sobre la recopilación de datos y el filtrado de eventos
  • Recopilación de datos personalizable adaptada a necesidades de monitorización específicas
  • Capacidad para capturar eventos de múltiples paquetes simultáneamente
  • Capacidades de filtrado flexibles para centrarse en las operaciones relevantes
  • Soporte para la monitorización del sistema de producción sin degradar la experiencia del usuario
  • Seguimiento integral de métricas de rendimiento
  • Diagnóstico avanzadoostcapacidades de los circuitos integrados para la resolución de problemas
  • Mantenimiento del registro de auditoría para el cumplimiento de los requisitos
  • Opciones de análisis de datos históricos y en tiempo real

1.3 Eventos extendidos vs SQL Server Profiler

Aunque SQL Server Profiler MS SQL Extended Events, una herramienta de monitorización tradicional, ofrece una alternativa más eficiente. Consume menos recursos del sistema y proporciona una mejor escalabilidad para entornos de producción.

SQL Server Profiler está obsoleto y Microsoft recomienda migrar a Eventos extendidos para todas las actividades de supervisión.

2. Comprensión de la arquitectura de eventos extendidos

2.1 Componentes extendidos del motor de eventos

El motor de eventos extendidos consta de varios componentes principales que trabajan conjuntamente para capturar, procesar y almacenar datos de eventos. Comprender estos componentes le ayudará a diseñar soluciones de monitorización eficaces.

  • Despachador: El componente de distribución coordina el flujo de eventos desde las fuentes de eventos hasta el motor de Eventos Extendidos. Cuando se produce un evento, el distribuidor recibe la notificación y la dirige a las sesiones activas que se han suscrito a ese tipo de evento específico.
  • Buffer: Tempo de buffersrarAlmaceno los datos del evento en memoria antes de escribirlos en tarEste mecanismo de almacenamiento en búfer mejora el rendimiento al reducir las operaciones de E/S. El tamaño del búfer y la configuración de administración se pueden ajustar para equilibrar el uso de la memoria con los requisitos de captura de datos.
  • Sesión: Una sesión define el alcance de la monitorización de eventos. Especifica qué eventos capturar, qué acciones ejecutar, qué predicados aplicar y dónde almacenar los resultados. Las sesiones se pueden crear, modificar y starTed, y se detuvo por su cuenta.
  • Tarobtener instancia: TarLas instancias GET representan los destinos de almacenamiento para los datos de eventos capturados. Cada sesión puede escribir en una o varias instancias. tarobtiene, como archivos, búferes circulares o contadores. TarObtiene el proceso y almacena la información del evento para su posterior análisis.

2.2 Paquetes para eventos

SQL Server Los eventos extendidos organizan la funcionalidad en paquetes. Cada paquete contiene eventos, acciones, tipos, predicados y otros relacionados. tarobtiene. Los paquetes comunes incluyen sqlserver, sqlos y package0.

  • El paquete sqlserver proporciona eventos específicos de la base de datos, como consultas y transacciones.
  • El paquete sqlos contiene eventos del sistema operativo.
  • El paquete 0 ofrece funcionalidad de propósito general utilizada en todos los paquetes.

2.3 Tipos de eventos y campos

Los eventos representan sucesos dentro de SQL Server que desee supervisar. Cada tipo de evento tiene campos predefinidos que capturan información relevante. Por ejemplo, el evento sql_statement_completed incluye campos para la duración, el tiempo de CPU, las lecturas y las escrituras.

Los eventos pueden ser síncronos o asíncronos. Los eventos síncronos se activan durante la propia operación, mientras que los asíncronos se activan una vez finalizada. Comprender las características de los eventos le ayudará a seleccionar los más adecuados para sus necesidades de monitorización.

2.4 acciones

Las acciones añaden suplementotary la información de los eventos capturados. Cuando se produce un evento, se ejecutan las acciones asociadas para recopilar contexto adicional, como texto SQL, ID de sesión o información de la pila de llamadas.

Las acciones comunes incluyen `sql_text` para capturar las sentencias de consulta, `database_name` para identificar la base de datos y `client_h`.ostNombre para rastrear el servidor de origen. Las acciones proporcionan un contexto esencial para la resolución de problemas y el análisis.

Objetivos 2.5

Tardetermina cómo y dónde se almacenan los datos del evento. SQL Server Eventos extendidos admite múltiples tarobtener tipos, incluyendo:

  • Archivo de eventos para almacenamiento en disco, que proporciona almacenamiento persistente para un análisis detallado
  • búfer circular para la retención en memoria, que ofrece un acceso rápido a los eventos recientes con una sobrecarga mínima.
  • contador de eventos para conteo simple
  • histograma para agrupación
  • emparejamiento de pares para correlacionar eventos relacionados

2.6 Predicados (Filtros)

Los predicados filtran los eventos según condiciones específicas, reduciendo el volumen de datos capturados. Puede filtrar por nombre de base de datos, nombre de aplicación, ID de sesión, umbrales de duración o cualquier valor de campo del evento.

El uso eficaz de predicados minimiza el impacto en el rendimiento al capturar solo los eventos relevantes. Los predicados complejos combinan múltiples condiciones mediante operadores lógicos para crear criterios de filtrado precisos.

3. Estados y ciclo de vida de la sesión de eventos extendidos

3.1 Estados de sesión: CREAR, MODIFICAR y ELIMINAR

Las sesiones de eventos extendidos progresan a través de estados distintos:

  • La instrucción CREATE EVENT SESSION define una nueva sesión pero no la crea.tarLa sesión permanece en estado detenido hasta que se active explícitamente.
  • La instrucción ALTER EVENT SESSION modifica la configuración de la sesión o cambia su estado entre detenido y en ejecución.tarted
  • La instrucción DROP EVENT SESSION elimina por completo la definición de sesión del servidor.

3.2 Contenido y características de la sesión

Cada sesión contiene una colección de eventos, acciones, tarSe pueden obtener y utilizar predicados. Las sesiones tienen límites implícitos que definen su alcance y comportamiento. Las opciones de configuración controlan la asignación de memoria, la retención de eventos y la latencia de envío.

Las características de la sesión incluyen si persisten entre recursos del servidor.tarts, la asignación máxima de memoria y cómo gestionan la presión de memoria. Estas configuraciones influyen significativamente en el comportamiento de la sesión y el consumo de recursos.

3.3 Límites de sesión y paquetes

Los límites de sesión definen las relaciones entre eventos. tarSe obtienen datos y se encapsulan. Los eventos de un paquete pueden desencadenar acciones de otro, lo que proporciona flexibilidad en las estrategias de recopilación de datos.

Las relaciones entre paquetes permiten combinar eventos de múltiples fuentes dentro de una misma sesión. Esta capacidad posibilita escenarios de monitorización integrales que abarcan diferentes entornos. SQL Server subsistemas.

4. Creación de sesiones de eventos extendidas mediante SSMS

4.1 Requisitos previos y configuración

Antes de crear SQL Server Para las sesiones de Eventos Extendidos, asegúrese de tener los permisos adecuados. Necesita el permiso ALTER ANY EVENT SESSION para sesiones con ámbito de servidor o el permiso CONTROL en la base de datos para sesiones con ámbito de base de datos.

Comprueba eso SQL Server Management Studio está instalado y conectado a su tarObtén una instancia. Familiarízate con los requisitos de monitoreo e identifica qué eventos y tarse adapta mejor a tus necesidades.

4.2 Acceso a eventos extendidos en el Explorador de objetos

Para acceder a la interfaz de Eventos extendidos en SSMS, siga estos pasos:

  1. Abierto SQL Server Estudio de gestión y conéctese a su SQL Server ejemplo.
  2. En el Explorador de objetos, expanda Gestionamiento -> Eventos extendidos.
  3. El nodo Eventos extendidos contiene Talleres más antigua y Paquetes Carpetas para gestionar las configuraciones de monitorización.

Acceda a la interfaz de Eventos Extendidos en SQL Server Estudio de gestión.

4.3 Crear una nueva sesión

Para crear una nueva sesión:

    1. Haga clic derecho en el Talleres carpeta debajo Eventos extendidos.
    2. Seleccione Nueva sesión Para abrir el cuadro de diálogo de configuración. El siguiente contenido utilizará este método para crear una nueva sesión.

Crear una nueva sesión de eventos extendidos en SQL Server Estudio de gestión.

Nota la Asistente para nueva sesión También está disponible para una experiencia más guiada.

4.3.1 Configuración general de la página

En la pestaña General página, configurar propiedades básicas de sesión:

  1. Introduzca un nombre de sesión en el Sesión name campo. Utilice nombres descriptivos que indiquen el propósito del monitoreo.
  2. Opcionalmente, seleccione Start la sesión del evento en el servidor startubo para habilitar la activación automática de la sesión.
  3. La plantilla de sesión predeterminada es BlancoPuedes usar otras plantillas si utilizas una configuración predefinida.

Página general de la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

4.3.2 Configuración de la página de eventos

La Eventos Esta página te permite seleccionar qué eventos quieres monitorizar:

  1. Seleccione la Forma para Eventos página desde la izquierda Selecciona una página .
  2. En el cuadro de diálogo Biblioteca de eventosrary, explore los eventos disponibles o utilice la función de búsqueda.
  3. Filtra los eventos introduciendo palabras clave como “sql_statement_completed” para encontrar eventos relevantes.
  4. Seleccione el evento deseado, como por ejemplo sql_statement_completed.
  5. Haz clic en el botón de flecha derecha para mover el evento a la Eventos seleccionados .

Página de eventos de la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

4.3.3 Configuración de almacenamiento de datos

La Almacenamiento de datos Esta página define dónde se almacenan los datos del evento:

  1. Seleccione la Forma para Almacenamiento de datos página desde la izquierda Selecciona una página .
  2. En el cuadro de diálogo Orden de Targets o Metas área, elige una tarSeleccione el tipo en el menú desplegable.

Página de almacenamiento de datos de la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

(1) archivo_de_eventos Target

El archivo de eventos targuardar datos de la tienda en archivos de disco con la extensión .xel:

  1. Seleccione archivo_de_evento del menú tarObtener menú desplegable de tipo.
  2. Especifique la ruta del archivo, por ejemplo C:\temp\YourSession_Tarobtener.xel.
  3. Configure las opciones de rotación para administrar el espacio en disco estableciendo el tamaño máximo de archivo y el número de archivos.
  4. La tarSe reciben eventos de escritura de forma continua hasta que la sesión finaliza o se alcanzan los límites de almacenamiento.

Configurar la sesión tarAcceder al archivo de eventos en SSMS

(2) búfer circular Target

El búfer circular tarAlmacena eventos de la tienda en memoria para un acceso rápido sin E/S de disco:

  1. Seleccione búfer circular como el tarobtener tipo.
  2. Configure la asignación máxima de memoria para el búfer.
  3. Tenga en cuenta que los eventos más antiguos se descartan cuando se llena el búfer, lo que hace que esto sea adecuado para el monitoreo de la actividad reciente.

Configure  tarAcceder al búfer circular para la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

(3) contador_de_eventos Target

El contador de eventos tarLa función `get` simplemente contabiliza las ocurrencias de eventos sin almacenar datos detallados. Esto proporciona una sobrecarga mínima cuando solo se necesita información de frecuencia.

Configure  tarAcceda al contador de eventos para la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

(4) histograma Target

El histograma tarObtiene eventos agrupados según un valor de campo específico, creando estadísticas de distribución. Esto es útil para identificar patrones comunes o valores de alta frecuencia.

Configure  tarAcceda al histograma de la sesión de Eventos Extendidos en SQL Server Estudio de gestión.

(5) emparejamiento de pares Target

El emparejamiento de pares tarSe obtienen correlaciones entre eventos relacionados, como la adquisición y liberación de bloqueos. Esto permite analizar operaciones emparejadas y sus relaciones temporales.

Configurar la sesión tarAcceda a pair_matching en SSMS

NUNCA configuraciones avanzadas

La Avanzado Esta página proporciona opciones de configuración a nivel de sesión:

  1. Seleccione la Forma para Avanzado página desde la izquierda Selecciona una página .
  2. Configurar Modo de retención de eventos para controlar cómo se gestionan los eventos bajo presión de memoria.
  3. Establecer latencia máxima de despacho para equilibrar el procesamiento en tiempo real con el rendimiento del sistema.
  4. Configurar Tamaño máximo de memoria más antigua y Tamaño máximo del evento En función de sus requisitos de monitorización.
  5. Seleccione Modo de partición de memoria para optimizar entornos de CPU única o múltiple.

Página avanzada de la sesión en SQL Server Estudio de gestión.

4.4 Configuración de filtros de eventos (predicados)

Los predicados reducen el volumen de datos filtrando eventos según criterios específicos. Para configurar los filtros:

  1. En la pestaña Eventos En esta página, seleccione el evento que desea filtrar, como por ejemplo “sql_statement_completed”.
  2. Haga clic en Configurar para abrir el cuadro de diálogo de configuración del evento.
    Configurar el evento de una sesión de Eventos Extendidos en SQL Server Estudio de gestión.
  3. Seleccione la Forma para Filtro (predicado) .
  4. En el cuadro de diálogo Campo En el menú desplegable, seleccione el campo por el que desea filtrar, como por ejemplo la duración.
  5. Seleccione un Operador, como por ejemplo “>”.
  6. Introduzca el filtro Valor, como por ejemplo 1000000 (1 segundo).
  7. Añada más condiciones si es necesario.

Configure los filtros (predicados) para un evento.

4.5 Selección de acciones y campos de eventos

Para cada evento, puede seleccionar los datos que se recopilarán:

  1. En la pestaña Eventos En esta página, seleccione el evento del que desea seleccionar los datos, como por ejemplo “sql_statement_completed”.
  2. Haga clic en Configurar para abrir el cuadro de diálogo de configuración del evento.
  3. Seleccione la Forma para Campos globales (Acciones) .
  4. Seleccione las acciones para agregar suplementostary la información, como database_name o client_app_name.
    Configura las acciones de un evento.
  5. Consulte el documento Campos de eventos sección para ver qué campos se capturan automáticamente.
  6. Elimine los campos innecesarios para reducir el volumen de datos.
    Configura los campos de un evento.

4.6 Starting y gestión de sesiones

Después de configurar tu sesión, puedestart. y supervisar su funcionamiento:

  1. Haga clic en OK para crear la sesión.
  2. En el Explorador de objetos, expanda el Talleres carpeta para ver tu nueva sesión.
  3. Haz clic con el botón derecho en el nombre de la sesión y selecciona StarSesión para comenzar a registrar los eventos.
    Staren una sesión de Eventos Extendidos en SQL Server Estudio de gestión.
  4. Para ver los datos en directo, haga clic con el botón derecho en la sesión y seleccione Ver datos en directo.
    Vea los datos en vivo de una sesión de Eventos Extendidos en SQL Server Estudio de gestión.
  5. Detenga la sesión haciendo clic con el botón derecho y seleccionando Sesión de parada.

5. Creación de sesiones de eventos extendidas mediante T-SQL

5.1 Sintaxis de CREATE EVENT SESSION

La creación de sesiones de eventos extendidos con T-SQL proporciona un control preciso y permite la creación de scripts para la implementación automatizada. La instrucción CREATE EVENT SESSION sigue una estructura de sintaxis específica.

La sintaxis básica incluye el nombre de la sesión, cláusulas ADD EVENT para cada evento, ADD TARCláusulas GET para destinos de almacenamiento y cláusulas WITH opcionales para la configuración de la sesión.

5.2 Creación de una sesión de evento básica

Una sesión básica supervisa eventos específicos y escribe los resultados en un archivo tarConsíguelo. Aquí te explicamos cómo construir los componentes esenciales.

5.2.1 Definición del nombre y las opciones de la sesión

Starcreando la sesión con un nombre descriptivo:

CREATE EVENT SESSION [SampleSession] ON SERVER

La cláusula ON SERVER crea una sesión con ámbito de servidor que persiste incluso después de realizar cambios en la base de datos. Para Azure SQL Database, utilice ON DATABASE para sesiones con ámbito de base de datos.

5.2.2 Agregar eventos con AGREGAR EVENTO

Agregue eventos para capturar utilizando la cláusula ADD EVENT:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed

Esto registra todas las sentencias SQL completadas. Puede agregar varios eventos incluyendo cláusulas ADD EVENT adicionales.

5.2.3 Configuración de acciones de eventos

Las acciones recopilan información adicional para cada evento. Agregue las acciones entre paréntesis después del nombre del evento:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)

Este ejemplo captura el texto SQL, el nombre de la base de datos y el nombre de usuario para cada instrucción completada.

5.2.4 Establecimiento de predicados de eventos (cláusula WHERE)

Los predicados filtran los eventos para reducir el volumen de datos. Utilice la cláusula WHERE dentro de la definición del 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 declaraciones con una duración superior a 5 segundos (5,000,000 microsegundos).

5.3 Agregar evento Tarse

TarSe define dónde se almacenan los datos del evento y cómo se procesan.

5.3.1 AÑADIR TARSintaxis GET

Agregar la extensión de tarempieza a usar el ADD TARCláusula GET después de que se hayan definido todos los eventos:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel'
)

El prefijo package0 indica el tarLa función `get` proviene del paquete base.

5.3.2 Configuración Tarobtener parámetros

Cada tarEl tipo get acepta parámetros específicos. Para event_file, configure filename, max_file_size y max_rollover_files:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel',
        max_file_size=(50),
        max_rollover_files=(5)
)

Esta configuración crea archivos de hasta 50 MB cada uno, manteniendo hasta 5 archivos mediante la rotación de copias.

5.4 Opciones y configuración de la sesión

La cláusula WITH configura opciones a nivel de sesión que controlan el comportamiento y el uso de recursos.

5.4.1 MEMORIA_MÁXIMA y MODO_DE_RETENCIÓN_DE_EVENTOS

Control de la asignación de memoria y el manejo de eventos bajo presión:

WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)

Las opciones de EVENT_RETENTION_MODE incluyen ALLOW_SINGLE_EVENT_LOSS para un uso mínimo de memoria, ALLOW_MULTIPLE_EVENT_LOSS para una sobrecarga moderada y NO_EVENT_LOSS para la retención completa de datos.ost del impacto potencial en el rendimiento.

5.4.2 LATENCIA_MÁXIMA_DE_DESPACHO

Establece el tiempo máximo que los eventos pueden permanecer en los búferes antes de ser escritos. tarobtiene:

WITH (
    MAX_DISPATCH_LATENCY=30 SECONDS
)

Los valores más bajos proporcionan datos en tiempo real en el cost de mayor número de operaciones de E/S.

5.4.3 MODO_PARTICIÓN_DE_MEMORIA

Optimiza la partición de memoria para tu configuración de hardware:

WITH (
    MEMORY_PARTITION_MODE=PER_CPU
)

Las opciones incluyen NONE para una sola partición, PER_NODE para sistemas NUMA y PER_CPU para máxima concurrencia en sistemas de múltiples CPU.

5.5 Starting, Detener y Alterar Sesiones

Gestione el estado y la configuración de la sesión mediante sentencias ALTER EVENT SESSION.

5.5.1 ALTER EVENTO DE SESIÓN para Start/Parar

Starsesión de ta después de la creación:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;

Detener una sesión en ejecución:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;

5.5.2 Modificación de sesiones existentes

Modificar la configuración de la sesión mientras está detenida. Agregar eventos:

ALTER EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_batch_completed;

Eliminar eventos:

ALTER EVENT SESSION [SampleSession] ON SERVER
DROP EVENT sqlserver.sql_statement_completed;

5.5.3 Eliminación de sesiones de eventos

Eliminar una sesión por completo con DROP EVENT SESSION:

DROP EVENT SESSION [SampleSession] ON SERVER;

La sesión debe finalizar antes de soltar el botón.

6. Trabajar con eventos Tarentra en detalle

6.1 archivo_de_eventos Tarobtener configuración

El archivo de eventos target proporciona almacenamiento persistente para datos de eventos con opciones de configuración flexibles.

6.1.1 Ruta de archivo y convenciones de nomenclatura

Especifique la ruta completa y el nombre de archivo para los archivos de eventos:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel'
)

Utilice la extensión .xel para los archivos de registro de eventos extendidos. Asegúrese de que SQL Server La cuenta de servicio tiene permisos de escritura en el directorio especificado.

6.1.2 Rotación de archivos y gestión de tamaño

Configure la rotación automática de archivos para administrar el espacio en disco:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)

Cuando un archivo alcanza los 50 MB, SQL Server Los eventos extendidos crean un nuevo archivo con un sufijo incremental. Después de alcanzar los 10 archivos, se sobrescribe el archivo más antiguo.

6.1.3 Lectura de datos del archivo de eventos

Consultar datos de archivos de eventos utilizando sys.fn_xe_file_tarFunción 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
);

El patrón comodín lee todos los archivos asociados a la sesión.

6.2 búfer circular TarObtener uso

El búfer circular tarObtén los eventos de la tienda en memoria para un acceso rápido a la actividad reciente.

6.2.1 Almacenamiento de eventos basado en memoria

Configurar ring_buffer para almacenamiento basado en memoria:

ADD TARGET package0.ring_buffer

Los eventos permanecen accesibles solo mientras la sesión esté activa y SQL Server está en ejecución. Los datos son lost cuando la sesión se detiene o el servidor restarTs

6.2.2 Tamaño y configuración del búfer

Control de la asignación de memoria para el búfer circular:

ADD TARGET package0.ring_buffer(
    SET max_memory=(4096)
)

Especifique la memoria en KB. Cuando el búfer se llena, los eventos más antiguos se descartan utilizando un enfoque FIFO.

6.2.3 Consulta de datos del búfer circular

Acceso a los datos del búfer circular a través de las DMV:

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';

La target_data contiene información de eventos en formato XML.

6.3 contador de eventos Target

El contador de eventos target proporciona un conteo simple sin almacenamiento detallado de datos:

ADD TARGET package0.event_counter

Esta tarObtenga registros de la frecuencia de eventos con una sobrecarga mínima, útil para la monitorización de alto volumen donde solo importan los recuentos.

6.4 histograma Target

El histograma tarObtener 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'
)

Esta configuración crea un histograma que muestra la distribución de eventos en las bases de datos.

6.5 emparejamiento de pares Target

El emparejamiento de pares tarObtener correlaciones con eventos relacionados, como adquisiciones de bloqueos con lanzamientos:

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'
)

Esto permite analizar las operaciones emparejadas y sus duraciones.

7. Visualización y análisis de datos de eventos extendidos

7.1 Uso de SSMS para ver datos en vivo

SQL Server Management Studio proporciona una interfaz gráfica para visualizar los datos de Eventos Extendidos en tiempo real:

  1. En el Explorador de objetos, expanda Gestionamiento -> Eventos extendidos -> Talleres.
  2. Haz clic con el botón derecho en tu sesión activa.
  3. Seleccione Ver datos en directo para abrir el visor de datos en vivo.
    Vea los datos en vivo de una sesión de Eventos Extendidos en SQL Server Estudio de gestión.
  4. Los eventos aparecen en la cuadrícula a medida que ocurren.
  5. Haz clic en los eventos individuales para ver los valores detallados de los campos en el panel de detalles.
    Sigue la información en directo de los eventos, incluyendo los detalles del mismo.
  6. Utilice los filtros de la barra de herramientas para centrarse en tipos de eventos o valores de campo específicos.

7.2 Consulta de datos de archivos de eventos con T-SQL

Las consultas T-SQL proporcionan un análisis flexible de los datos de eventos capturados.

7.2.1 sys.fn_xe_file_tarFunción get_read_file

Lea los datos del archivo de eventos utilizando esta función del 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
);

La función devuelve una fila por evento con detalles en formato XML.

7.2.2 Análisis de datos de eventos XML

Extraer valores específicos de los datos del evento 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;

Las expresiones XQuery extraen valores de campos individuales de la estructura XML.

7.2.3 Conversión de datos de eventos a tablas

Crear conjuntos de resultados estructurados a partir de datos 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 Consulta de datos del búfer circular

Extraer datos del búfer circular tarobtiene:

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 Vistas del sistema para eventos extendidos

SQL Server Proporciona varias vistas de DMV y de catálogo para gestionar y supervisar las sesiones de eventos extendidos.

7.4.1 sys.server_event_sessions

Ver definiciones de sesión almacenadas en el 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 vista de catálogo muestra los detalles de configuración de todas las sesiones definidas.

7.4.2 sys.dm_xe_sessions

Ver las sesiones actualmente activas:

SELECT
    name,
    create_time,
    total_regular_buffers,
    regular_buffer_size,
    total_large_buffers,
    large_buffer_size
FROM sys.dm_xe_sessions;

Esta DMV proporciona información en tiempo de ejecución sobre las sesiones de Eventos Extendidos activas.

7.4.3 sys.dm_xe_session_tarse

Ver tarse asocia con sesiones activas:

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 Otros DMV útiles

Las vistas adicionales proporcionan información completa sobre la sesión:

  • sys.dm_xe_session_events: Enumera los eventos en las sesiones activas
  • sys.dm_xe_session_event_actions: Muestra las acciones configuradas para los eventos de sesión.
  • sys.dm_xe_objects: Cataloga todos los eventos, acciones y objetos disponibles. tarse
  • sys.dm_xe_object_columns: Campos de detalles disponibles para cada tipo de evento
  • sys.dm_xe_packages: Enumera todos los paquetes de eventos extendidos.

8. Casos prácticos y ejemplos

8.1 Supervisión de la ejecución de sentencias SQL

El seguimiento de la ejecución de las sentencias SQL proporciona información sobre los patrones de consulta y las características de rendimiento.

8.1.1 Seguimiento de eventos sql_statement_completed

Crea una sesión para monitorizar las sentencias SQL completadas:

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 Filtrado por base de datos o aplicación

Centrarse en bases de datos o aplicaciones específicas que utilicen 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 información sobre interbloqueos

El análisis de interbloqueos requiere recopilar información detallada sobre las transacciones conflictivas.

8.2.1 Evento xml_deadlock_report

Crea una sesión para capturar gráficos completos de interbloqueo:

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 Análisis de gráficos de interbloqueo

Extraer y analizar la información de interbloqueo:

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';

El gráfico de interbloqueo contiene detalles sobre procesos, recursos y selección de víctimas.

8.3 Seguimiento de problemas de rendimiento de las consultas

Identificar las consultas con bajo rendimiento utilizando métricas de duración y consumo de recursos.

8.3.1 Detección de consultas de larga duración

Capturar consultas que superen umbrales de duración 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álisis del plan de ejecución

Captura de planes de consulta para el análisis de rendimiento:

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 Supervisión de eventos de inicio de sesión y seguridad

Realizar un seguimiento de las actividades de autenticación y autorización para la auditoría de seguridad.

8.4.1 Seguimiento de éxito y fracaso del inicio de sesión

Supervise tanto los intentos de inicio de sesión exitosos como los fallidos:

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 Cambios de permisos

Seguimiento de las modificaciones de permisos de seguridad:

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 Monitoreo a nivel de base de datos

Supervisar las operaciones específicas de la base de datos y los cambios de estado.

8.5.1 Eventos de copia de seguridad y restauración

Seguimiento de las operaciones de copia de seguridad y restauración:

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 Cambios en el estado de la base de datos

Supervisar las transiciones del estado de la base de datos:

CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER
ADD EVENT sqlserver.database_started,
ADD EVENT sqlserver.database_stopped
ADD TARGET package0.ring_buffer;

8.6 Detección de corrupción de bases de datos y problemas de integridad

SQL Server La función Eventos Extendidos proporciona capacidades de alerta temprana para detectar posibles daños en la base de datos, lo que permite una intervención proactiva antes de que los problemas se agraven.

8.6.1 Eventos clave para la detección de corrupción

Varios eventos señalan una posible corrupción o problemas de E/S.

8.6.1.1 error_reported Evento para errores críticos

El evento error_reported captura todo SQL Server errores, incluidos los números de error relacionados con la corrupción:

ADD EVENT sqlserver.error_reported(
    WHERE (
        [severity] >= (20)
        OR [error_number] IN (823, 824, 825, 832, 855, 856)
    )
)

El error 823 indica errores de E/S, el 824 señala errores de consistencia lógica y el 825 informa éxitos de reintento de lectura que pueden indicar problemas de hardware.

8.6.1.2 Evento database_suspect_data_page

Este evento se activa cuando SQL Server Se encuentra con una página sospechosa:

ADD EVENT sqlserver.database_suspect_data_page

Las páginas sospechosas indican una posible corrupción y se registran en la tabla msdb.dbo.suspect_pages.

8.6.1.3 Evento errorlog_write

Capturar entradas escritas en el SQL Server registro de errores:

ADD EVENT sqlserver.errorlog_written(
    WHERE ([severity] >= (16))
)

8.6.2 Creación de una sesión de monitoreo de corrupción

Establecer una sesión integral para la detección y el seguimiento de la corrupción.

8.6.2.1 Filtrado de números de error de corrupción (823, 824, 825)

Créar un tarSesión informativa centrada en los indicadores de corrupción:

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 Establecimiento de niveles de gravedad apropiados

Incluir errores de alta gravedad que puedan indicar corrupción:

WHERE (
    [severity] >= (20)
    OR [error_number] IN (823, 824, 825)
)

Una gravedad de 20 o superior indica problemas a nivel de sistema que a menudo están relacionados con la corrupción.

8.6.2.3 Configuración del archivo de eventos TarRecibir alertas

Eventos de corrupción de almacenes para análisis y alertas:

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álisis de datos sobre sucesos de corrupción

Extraer e interpretar los eventos relacionados con la corrupción a partir de los datos recopilados.

8.6.3.1 Identificación de páginas sospechosas

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 Extracción de detalles y contexto del error

Analizar los eventos reportados como error para detectar patrones de corrupción:

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 Integración con DBCC CHECKDB

Utilice los datos de Eventos Extendidos para guiar DBCC COMPROBARDB ejecución.

8.6.4.1 Activación de DBCC CHECKDB basada en eventos

Cuando se detecten eventos de corrupción, ejecute DBCC CHECKDB para una validación completa:

-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Los eventos extendidos proporcionan una alerta temprana, mientras que DBCC CHECKDB realiza una validación exhaustiva.

8.6.4.2 Flujos de trabajo de respuesta automatizada ante corrupción

Implemente respuestas automatizadas mediante la monitorización del archivo de eventos:

  1. Configurar SQL Server Tarea del agente para consultar periódicamente el archivo de eventos de supervisión de corrupción.
  2. Cuando se detecten eventos de corrupción, ejecute DBCC CHECKDB en la base de datos afectada.
  3. Enviar alertas por correo electrónico a los administradores de bases de datos con detalles del evento y resultados de DBCC CHECKDB.
  4. Registre los resultados en una tabla de monitoreo centralizada para el análisis de tendencias.
8.6.4.3 Equilibrio entre la monitorización proactiva y el rendimiento

Los eventos extendidos ofrecen una detección de corrupción con baja sobrecarga en comparación con la ejecución frecuente de DBCC CHECKDB:

  • Ejecuta eventos extendidos de forma continua para la detección de corrupción en tiempo real.
  • Ejecute DBCC CHECKDB solo cuando aparezcan indicadores de corrupción.
  • Programe ejecuciones regulares de DBCC CHECKDB durante las ventanas de mantenimiento.
  • Utilice Eventos Extendidos para identificar qué bases de datos requieren atención inmediata.

Este enfoque proporciona una monitorización proactiva sin el importante consumo de recursos que suponen las comprobaciones de integridad constantes.

8.6.4.4 Reparar base de datos dañada

Si se detectan errores en la base de datos, puede usar DBCC CHECKDB para corregir errores menores. Si falla, puede probar con una herramienta de terceros. herramienta de recuperación de bases de datos SQL, que generalmente ofrece una tasa de recuperación más alta en bases de datos gravemente dañadas.

9. Eventos extendidos con ámbito de servidor frente a eventos extendidos con ámbito de base de datos

9.1 Sesiones de eventos con ámbito de servidor

Las sesiones con ámbito de servidor supervisan la actividad en todo el sistema. SQL Server instancia. Estas sesiones se crean con la cláusula ON SERVER y persisten en la base de datos maestra.

CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\ServerWide.xel'
);

Las sesiones con ámbito de servidor capturan eventos de todas las bases de datos y son adecuadas para la monitorización a nivel de instancia.

9.2 Sesiones de eventos con ámbito de base de datos (Azure SQL Database)

Las sesiones con ámbito de base de datos se limitan a una única base de datos y se utilizan principalmente en Azure SQL Database, donde el acceso a nivel de servidor está restringido:

CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'DatabaseMonitoring.xel'
);

En Azure SQL Database, los archivos de eventos se almacenan en Azure Blob Storage en lugar de en sistemas de archivos locales.

9.3 Diferencias y casos de uso

Las sesiones con ámbito de servidor proporcionan una supervisión integral de todas las bases de datos, pero requieren permisos elevados. Las sesiones con ámbito de base de datos ofrecen aislamiento y son adecuadas para supervisar aplicaciones o inquilinos específicos.

Utilice sesiones con ámbito de servidor para la supervisión centralizada, la resolución de problemas de rendimiento en bases de datos y la auditoría de seguridad. Utilice sesiones con ámbito de base de datos en Azure SQL Database, entornos multiinquilino o cuando delegue las responsabilidades de supervisión a los equipos de aplicaciones.

10. Eventos extendidos en Azure SQL Database

10.1 Consideraciones específicas de Azure

Azure SQL Database implementa Eventos Extendidos con algunas diferencias respecto a la implementación local. SQL ServerLas sesiones tienen un ámbito de base de datos de forma predeterminada, y el almacenamiento de archivos de eventos utiliza Azure Blob Storage en lugar de sistemas de archivos locales.

La autenticación en Azure Blob Storage requiere un token SAS configurado en el archivo de eventos. tarObtener. Las cadenas de conexión hacen referencia a la cuenta de almacenamiento y al contenedor donde se almacenan los archivos de eventos.

Disponible Tarse obtiene en Azure

Azure SQL Database admite estos eventos extendidos. tarobtiene:

  • archivo_evento: Escribe en Azure Blob Storage
  • ring_buffer: Almacenamiento basado en memoria con el mismo comportamiento que en las instalaciones.
  • contador_de_eventos: Cuenta las ocurrencias del evento

El archivo de eventos tarSe requiere configuración con las credenciales de Azure Blob Storage:

ADD TARGET package0.event_file(
    SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)

10.3 Creación de sesiones con ámbito de base de datos

Crear una sesión en Azure SQL Database:

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;

Las sesiones con ámbito de base de datos en Azure se comportan de forma similar a las sesiones con ámbito de servidor en entornos locales, pero con un ámbito limitado a la base de datos actual.

11. Mejores prácticas y optimización del rendimiento

11.1 Minimizar el impacto en el rendimiento

Los eventos extendidos están diseñados para minimizar la sobrecarga, pero una configuración incorrecta puede afectar al rendimiento. Siga estas directrices:

  • Utilice predicados específicos para filtrar eventos en lugar de capturarlos todos.
  • Evite recopilar acciones innecesarias que aumenten la carga de procesamiento.
  • Elija apropiado tarse basa en las necesidades de retención de datos.
  • Establezca tamaños de búfer y latencias de envío razonables.
  • Supervise el consumo de recursos de la sesión mediante DMV

11.2 Elección de los eventos y filtros adecuados

Seleccione eventos que se ajusten directamente a sus objetivos de monitorización. Evite los eventos de alta frecuencia a menos que sean necesarios y aplique siempre predicados para reducir el volumen de datos.

Por ejemplo, en lugar de capturar todos los eventos sql_statement_completed, filtre por bases de datos específicas o umbrales de duración:

WHERE (
    [sqlserver].[database_name] = N'ProductionDB'
    AND [duration] > 1000000
)

11.3 TarObtenga las pautas de selección

Elija tarse basa en sus requisitos de análisis:

  • Utilice event_file para un análisis histórico detallado y una retención a largo plazo.
  • Utilice ring_buffer para la monitorización en tiempo real con un impacto mínimo en la E/S.
  • Utilice event_counter cuando solo importe la frecuencia.
  • Utilice un histograma para el análisis de distribución.
  • Utilice pair_matching para el análisis de eventos correlacionados

11.4 Recomendaciones de configuración de sesión

Configure las sesiones con límites de recursos adecuados:

  • Establezca MAX_MEMORY en función del volumen de eventos previsto y los recursos del servidor.
  • Utilice ALLOW_SINGLE_EVENT_LOSS para minimizar la sobrecarga en most escenarios
  • Configure MAX_DISPATCH_LATENCY para equilibrar las necesidades de tiempo real con el rendimiento.
  • Utilice la partición de memoria PER_CPU en sistemas multiprocesador.
  • Evitar STARTUP_STATE=ON a menos que se requiera monitoreo continuo

11.5 Administración del tamaño y la retención de archivos de eventos

Configure la rotación de archivos para evitar un uso ilimitado del disco:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Session.xel',
        max_file_size=(100),
        max_rollover_files=(10)
)

Esta configuración almacena aproximadamente 1 GB de datos de eventos (10 archivos × 100 MB). Ajústela según sus requisitos de retención y el almacenamiento disponible.

12. Solución de problemas de eventos extendidos

12.1 Problemas comunes y soluciones

Entre los problemas comunes de los eventos extendidos se incluyen sesiones que no capturan datos, degradación del rendimiento y archivos. tarSe presentan problemas y comportamientos inesperados durante la sesión.

12.2 La sesión no captura datos

Si una sesión no captura los eventos esperados:

  1. Verifique que la sesión sea starTed usando sys.dm_xe_sessions.
  2. Comprueba los predicados para asegurarte de que no filtran todos los eventos.
  3. Confirma que los eventos se activan por temporarQuitando filtros con frecuencia.
  4. Revise los permisos para asegurarse de que tiene acceso para ver los datos de la sesión.
  5. Compruebe que tarLa configuración obtenida es correcta y se puede modificar.
SELECT name, create_time
FROM sys.dm_xe_sessions
WHERE name = 'YourSessionName';

12.3 Degradación del rendimiento

Si los eventos extendidos provocan problemas de rendimiento:

  1. Agregue predicados para reducir el volumen de eventos.
  2. Eliminar acciones innecesarias que acumulan suplementostary datos.
  3. Aumente MAX_DISPATCH_LATENCY para reducir la frecuencia de escritura.
  4. Cambie EVENT_RETENTION_MODE a ALLOW_SINGLE_EVENT_LOSS.
  5. Considere utilizar ring_buffer en lugar de event_file para eventos de alta frecuencia.

Archivo 12.4 Tarobtener problemas

Archivo tarLos problemas que se presentan suelen estar relacionados con los permisos o el espacio en disco:

  1. Verificar el SQL Server La cuenta de servicio tiene permisos de escritura en el tarobtener directorio.
  2. Asegúrese de que haya suficiente espacio en disco disponible.
  3. Comprueba que la ruta especificada existe y es accesible.
  4. Revise la configuración de rotación de archivos si los archivos no se rotan como se esperaba.

12.5 Depuración con vistas del sistema

Utilice las DMV para diagnosticar problemas de eventos extendidos:

-- 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. Temas avanzados

13.1 Creación de paquetes de eventos personalizados

Los usuarios avanzados pueden crear paquetes de eventos personalizados para ampliar SQL Server Funcionalidad de eventos extendidos. Esto requiere desarrollo en C++ e integración con SQL Server Marco de extensibilidad.

Los paquetes personalizados permiten monitorizar eventos específicos de la aplicación o integrar sistemas de monitorización de terceros con la infraestructura de Eventos Extendidos.

13.2 Plantillas de sesión de eventos

SSMS proporciona plantillas integradas para escenarios de supervisión comunes. Acceda a las plantillas al crear nuevas sesiones mediante el asistente:

  1. En el cuadro de diálogo Nueva sesión, haga clic en Plantilla desplegable.
  2. Seleccione entre las plantillas disponibles, como Seguimiento de detalles de consultas o Estado del sistema.
  3. Modifique la plantilla para adaptarla a sus necesidades específicas.

13.3 Integración con soluciones de monitorización

Los datos de eventos extendidos pueden alimentar soluciones de monitorización empresarial:

  • Exportar datos de eventos a sistemas de registro centralizados
  • Analizar archivos de eventos y cargar datos en bases de datos de monitorización
  • Crea paneles personalizados utilizando herramientas de BI
  • Activar alertas basadas en patrones de eventos específicos
  • Correlación SQL Server eventos con métricas de aplicación e infraestructura

13.4 Automatización y planificación

Automatice la gestión de eventos extendidos utilizando SQL Server Agente:

  • Crear empleos para starsesiones de interrupción/detención durante ventanas de tiempo específicas
  • Análisis e informes de archivos de eventos programados
  • Implemente políticas de retención de datos archivando o eliminando archivos de eventos antiguos.
  • Automatice la respuesta a condiciones detectadas, como problemas de rendimiento o eventos de seguridad.

14. Migración desde SQL Server Profiler

14.1 SQL Server Mapeo de eventos del perfilador a eventos extendidos

Microsoft proporciona una correspondencia entre SQL Server Profiler Eventos y eventos extendidos. Las asignaciones comunes incluyen:

  • SQL:Lote completado -> sql_batch_completed
  • SQL:BatchStarting -> sql_batch_starting
  • SQL:StmtCompleted -> sql_statement_completed
  • SQL: Sentenciastarting -> sentencia_sqltarting
  • Gráfico de interbloqueo -> informe de interbloqueo XML
  • Auditoría de inicio de sesión -> inicio de sesión
  • Auditoría de cierre de sesión -> cerrar sesión

14.2 Conversión de definiciones de traza

Convertir existente SQL Server El generador de perfiles realiza un seguimiento de las sesiones de eventos extendidos identificando eventos equivalentes y configurando los predicados adecuados. SSMS proporciona asistencia para las conversiones comunes.

Revisa los filtros de seguimiento y conviértelos en predicados de Eventos Extendidos. Las acciones en Eventos Extendidos reemplazan las columnas de seguimiento de SQL Server Perfilador.

14.3 Comparación de rendimiento

Los eventos extendidos ofrecen un rendimiento significativamente mejor que SQL Server El perfilador y los estudios comparativos muestran que los eventos extendidos consumen menos ciclos de CPU y tienen un menor impacto en el rendimiento de las transacciones.

Los eventos extendidos utilizan procesamiento asíncrono y gestión de memoria optimizada, mientras que SQL Server El generador de perfiles se basa en la captura de eventos síncrona que se bloquea hasta que finaliza el procesamiento del seguimiento.

15. Conclusión

15.1 Resumen de conceptos clave

SQL Server Extended Events proporciona un marco de trabajo potente y ligero para la monitorización y la resolución de problemas. SQL ServerLa arquitectura consta de eventos, acciones, predicados, tarobtiene y sesiones que trabajan juntas para capturar la actividad relevante del servidor.

Las sesiones se pueden crear mediante SSMS o T-SQL, lo que ofrece flexibilidad tanto para la resolución de problemas puntual como para la monitorización automatizada. Múltiples tarLos tipos get admiten diferentes enfoques de análisis, desde la monitorización en tiempo real con ring_buffer hasta el análisis histórico con event_file.

Los eventos extendidos ofrecen un rendimiento superior en comparación con SQL Server El generador de perfiles ofrece capacidades de monitorización más completas. El sistema permite a los administradores y desarrolladores de bases de datos diagnosticar problemas, optimizar el rendimiento, mejorar la seguridad y garantizar el cumplimiento normativo.

15.2 Próximos pasos y recursos adicionales

Para continuar desarrollando tu SQL Server Experiencia de XEvents:

  • Implementa eventos extendidos en entornos de prueba para obtener experiencia práctica.
  • Consulte la documentación de Microsoft para obtener catálogos de eventos completos y una referencia de sintaxis detallada.
  • Recibir el boletín SQL Server Foros comunitarios para aprender de las experiencias de otros.
  • Explora escenarios avanzados como paquetes personalizados e integración con plataformas de monitorización.
  • Desarrolla una bibliotecarary plantillas de sesión para escenarios de monitorización comunes

16 Sección de preguntas frecuentes

Q: ¿Cuáles son SQL Server ¿Eventos prolongados?

A: SQL Server Extended Events es un sistema ligero de monitorización del rendimiento integrado en el SQL Server Motor de base de datos que captura información detallada sobre las operaciones del servidor con una sobrecarga mínima.

P: ¿En qué se diferencian los Eventos Extendidos de SQL Server ¿Perfilador?

A: Los eventos extendidos ofrecen un mejor rendimiento, menor sobrecarga y una configuración más flexible que SQL Server Perfilador. SQL Server El generador de perfiles está obsoleto y Microsoft recomienda usar Eventos extendidos para todas las tareas de supervisión.

P: ¿Pueden los eventos prolongados tener un impacto? SQL Server ¿actuación?

R: Cuando se configuran correctamente con los predicados y límites de recursos adecuados, los eventos extendidos tienen un impacto mínimo en el rendimiento. Una configuración deficiente sin filtrado puede afectar al rendimiento.

P: ¿Qué permisos se requieren para crear sesiones de eventos extendidos?

R: Necesita el permiso ALTER ANY EVENT SESSION para sesiones con ámbito de servidor o el permiso CONTROL en la base de datos para sesiones con ámbito de base de datos.

P: ¿Cómo puedo ver los datos de Eventos Extendidos?

A: Uso SQL Server El visor de datos en vivo de Management Studio permite consultar archivos de eventos con sys.fn_xe_file_.target_read_file, o consultar datos de búfer circular a través de DMV.

P: ¿Pueden los eventos extendidos detectar la corrupción de la base de datos?

A: Sí, los eventos extendidos pueden capturar errores relacionados con la corrupción (823, 824, 825) y eventos de página sospechosos, lo que proporciona una alerta temprana sobre posibles problemas de corrupción.

P: ¿Cuál es la diferencia entre eventos, acciones y predicados?

A: Los eventos son sucesos que deseas monitorizar. Las acciones añaden información complementaria.tary información para eventos capturados. Los predicados filtran eventos según condiciones para reducir el volumen de datos.

P: ¿Cómo puedo monitorizar las consultas de aplicaciones o bases de datos específicas?

A: Utilice predicados en la configuración de su evento para filtrar por database_name, client_app_name u otros campos relevantes.

Q: ¿Qué tar¿Qué getters debería usar para Eventos Extendidos?

A: Utilice event_file para almacenamiento persistente y análisis histórico, ring_buffer para monitoreo en tiempo real con baja sobrecarga, event_counter para seguimiento de frecuencia simple e histogram para análisis de distribución.

P: ¿Están disponibles los eventos extendidos en Azure SQL Database?

R: Sí, Azure SQL Database admite eventos extendidos con ámbito de base de datos con archivos de eventos almacenados en Azure Blob Storage.

P: ¿Cómo puedo solucionar un problema con una sesión de Eventos Extendidos que no captura datos?

A: Verificar que la sesión sea starTed, comprueba que los predicados no estén filtrando todos los eventos, confirma. tarObtenga la configuración y revise los permisos utilizando las DMV del sistema.

P: ¿Puedo automatizar la gestión de eventos extendidos?

A: Sí, úsalo SQL Server Trabajos de agente para start/stop sesiones, analizar archivos de eventos, implementar políticas de retención y responder a las condiciones detectadas.

Referencias


Sobre el Autor

Yuan Sheng es un administrador de bases de datos senior (DBA) con más de 10 años de experiencia en SQL Server Entornos y gestión de bases de datos empresariales. Ha resuelto con éxito cientos de escenarios de recuperación de bases de datos en organizaciones de servicios financieros, atención médica y manufactura.

Yuan se especializa en SQL Server recuperación de base de datos, soluciones de alta disponibilidady optimización del rendimiento. Su amplia experiencia práctica incluye la gestión de bases de datos de varios terabytes, la implementación Grupos de disponibilidad siempre activos, y desarrollar estrategias automatizadas de respaldo y recuperación para sistemas comerciales de misión crítica.

Gracias a su experiencia técnica y su enfoque práctico, Yuan se centra en crear guías integrales que ayuden a los administradores de bases de datos y a los profesionales de TI a resolver problemas complejos. SQL Server Aborda los desafíos de manera eficiente. Se mantiene al día con las últimas novedades. SQL Server versiones y las tecnologías de bases de datos en evolución de Microsoft, probando periódicamente escenarios de recuperación para garantizar que sus recomendaciones reflejen las mejores prácticas del mundo real.

¿Tiene preguntas acerca SQL Server ¿Necesita ayuda adicional para la recuperación de la base de datos o para solucionar problemas? Yuan le da la bienvenida. comentarios y sugerencias para mejorar estos recursos técnicos.

Comparte ahora: