Introducción a los eventos extendidos

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database

SQL Server La arquitectura de Eventos extendidos permite a los usuarios recopilar tantos datos como sea necesario para solucionar o identificar un problema de rendimiento. Eventos extendidos es configurable y ofrece una muy buena escalabilidad.

Los Eventos extendidos reemplazan las características en desuso de Seguimiento de SQL y SQL Server Profiler.

Encontrará más información sobre Eventos extendidos en Inicio rápido: eventos extendidos en SQL Server.

Ventajas de SQL Server Extended Events

Eventos extendidos es un sistema ligero de supervisión de rendimiento que usa una cantidad mínima de recursos de rendimiento. SQL Server Management Studio proporciona una interfaz gráfica de usuario para Eventos extendidos que permite crear y modificar sesiones, así como mostrar y analizar los datos de las sesiones. Aquí puede obtener más información sobre esas extensiones: |Administración de sesiones de eventos en el Explorador de objetos |Uso de XEvent Profiler de SSMS.

Conceptos de Extended Events

SQL Server Eventos extendidos se basa en conceptos existentes, como un evento o consumidor de eventos, usa los conceptos de Seguimiento de eventos para Windows y presenta nuevos conceptos.

En la tabla siguiente se describen los conceptos de Extended Events.

Tema Descripción
Paquetes de SQL Server Extended Events Describe los paquetes de Eventos extendidos que contienen objetos. Estos objetos se usan para obtener y procesar datos cuando se está ejecutando una sesión de Eventos extendidos.
Destinos de SQL Server Extended Events Describe los consumidores de eventos que pueden recibir datos durante una sesión de eventos.
Motor de SQL Server Extended Events Describe el motor que implementa y administra una sesión de Extended Events.
Sesiones de SQL Server Extended Events Describe la sesión de eventos extendidos.
   

Arquitectura de eventos extendidos

Eventos extendidos es el nombre con el que denominamos a un sistema general de control de eventos para los sistemas del servidor. La infraestructura de Extended Events admite la correlación de datos de SQL Servery bajo ciertas condiciones, la correlación de datos de las aplicaciones de base de datos y sistema operativo. En el caso del sistema operativo, la salida de Eventos extendidos debe dirigirse a Seguimiento de eventos para Windows (ETW). ETW se usa para establecer correlaciones entre los datos de eventos y los datos de eventos de la aplicación o del sistema operativo.

Todas las aplicaciones tienen puntos de ejecución que son útiles tanto dentro como fuera de una aplicación. Dentro de la aplicación, puede ponerse en cola el procesamiento asincrónico utilizando información recopilada durante la ejecución inicial de una tarea. Fuera de la aplicación, los puntos de ejecución proporcionan utilidades de supervisión con información. La información está relacionada con las características de rendimiento y comportamiento de la aplicación supervisada.

Extended Events admite la utilización de datos de eventos fuera de un proceso. Normalmente, estos datos los usan los usuarios que administran o admiten un producto mediante la supervisión del rendimiento o el desarrollo de aplicaciones en un producto con fines de depuración. Los datos se consumen o se analizan mediante herramientas como XEvent Profiler y el Monitor de rendimiento, T-SQL o herramientas de línea de comandos de Windows.

Los aspectos clave del diseño de Extended Events son los siguientes:

  • El motor de Extended Events es independiente del evento. El motor puede enlazar cualquier evento con cualquier destino, ya que el motor no está limitado por el contenido del evento. Para obtener más información sobre el motor de Extended Events, vea SQL Server Extended Events Engine.

  • Los eventos están separados de los consumidores de eventos, llamados destinos en Extended Events. Esto significa que cualquier destino puede recibir cualquier evento. Además, cualquier evento generado puede ser automáticamente utilizado por el destino, que puede registrar o proporcionar el contexto adicional del evento. Para más información, consulte SQL Server Extended Events Targets.

  • Los eventos son diferentes de la acción que se lleva a cabo cuando se produce un evento. Por lo tanto, puede asociarse cualquier acción a cualquier evento.

  • Los predicados pueden filtrar dinámicamente cuándo se deben capturar los datos de evento. El filtrado dinámico se suma a la flexibilidad de la infraestructura de Eventos extendidos. Para obtener más información, vea SQL Server Extended Events Packages.

Extended Events puede generar datos de eventos de forma sincrónica (y procesar de forma asincrónica dichos datos) lo que proporciona una solución flexible para el control de eventos. Además, Extended Events proporciona las características siguientes:

  • Un planteamiento unificado para controlar los eventos en todo el sistema de servidor, a la vez que habilita a los usuarios para aislar eventos específicos con el objeto de solucionar problemas.

  • Integración y compatibilidad con las herramientas de ETW existentes.

  • Un mecanismo completamente configurable de control de eventos basado en Transact-SQL.

  • La capacidad para supervisar dinámicamente los procesos activos, ejerciendo al mismo tiempo el mínimo efecto sobre dichos procesos.

  • Una sesión de estado del sistema predeterminada que se ejecuta sin efectos apreciables en el rendimiento. La sesión recopila datos del sistema que se pueden utilizar para ayudar a solucionar problemas de rendimiento. Para obtener más información, vea Usar la sesión system_health.

Tareas de Extended Events

Si usa Management Studio o Transact-SQL para ejecutar instrucciones de lenguaje de definición de datos (DDL) de Transact-SQL, o para consumir funciones y vistas de administración dinámica o vistas de catálogo, podrá crear soluciones sencillas o complejas de problemas de Eventos extendidos de SQL Server para el entorno de SQL Server.

Descripción de la tarea Tema
Utilice el Explorador de objetos para administrar sesiones de eventos. Administrar sesiones de eventos en el Explorador de objetos
Describe cómo crear una sesión de Extended Events. Crear una sesión de eventos extendidos
Describe cómo ver y restaurar los datos de destino. Visualización avanzada de datos de destino de eventos extendidos en SQL Server
Describe cómo usar las herramientas de Extended Events para crear administrar sesiones de SQL Server Extended Events. Herramientas de eventos extendidos
Describe cómo alterar una sesión de Extended Events. Modificar una sesión de eventos extendidos
Describe cómo obtener información acerca de los campos asociados a los eventos. Obtener los campos de todos los eventos
Describe cómo determinar los eventos que están disponibles en los paquetes registrados. Ver los eventos de los paquetes registrados
Describe cómo determinar los destinos de eventos extendidos que están disponibles en los paquetes registrados. Ver los destinos de eventos extendidos de los paquetes registrados
Describe cómo ver los eventos y las acciones de los eventos extendidos que son equivalentes a cada evento de Seguimiento de SQL y sus columnas asociadas. Ver los eventos extendidos equivalentes a las clases de evento de Seguimiento de SQL
Describe cómo determinar los parámetros que puede establecer al usar el argumento ADD TARGET en CREATE EVENT SESSION o ALTER EVENT SESSION. Obtener los parámetros configurables del argumento ADD TARGET
Describe cómo convertir un script de Seguimiento de SQL existente en una sesión de eventos extendidos. Convertir un script de seguimiento de SQL existente en una sesión de eventos extendidos
Describe cómo determinar las consultas que mantienen el bloqueo, el plan de la consulta y la pila de Transact-SQL en el momento en que se realizó el bloqueo. Determinar las consultas que retienen bloqueos
Describe cómo identificar el origen de los bloqueas que afectan al rendimiento de la base de datos. Buscar los objetos que han obtenido más bloqueos
Describe cómo usar los eventos extendidos con el seguimiento de eventos para Windows a fin de supervisar la actividad del sistema. Supervisar la actividad del sistema mediante eventos extendidos
Usar las vistas de catálogo y las vistas de administración dinámica (DMV) para eventos extendidos Instrucciones SELECT y JOIN en vistas del sistema para eventos extendidos en SQL Server
   

Use la consulta siguiente de Transact-SQL (T-SQL) para enumerar todos los posibles eventos extendidos y sus descripciones:

SELECT
     obj1.name as [XEvent-name],
     col2.name as [XEvent-column],
     obj1.description as [Descr-name],
     col2.description as [Descr-column]
  FROM
               sys.dm_xe_objects        as obj1
      JOIN sys.dm_xe_object_columns as col2 on col2.object_name = obj1.name
  ORDER BY
    obj1.name,
    col2.name

Ejemplos de código que pueden diferir de Azure SQL Database

Algunos ejemplos de código de Transact-SQL escritos para SQL Server local necesitan pequeños cambios para ejecutarse en el servicio Azure SQL Database en la nube. Una categoría de estos ejemplos de código implica vistas del sistema cuyos prefijos de nombre difieren ligeramente entre los dos sistemas de base de datos:

  • server_   -   prefijo para el entorno local
  • database_   -   prefijo para Azure SQL Database

Como ilustración, en la tabla siguiente se enumeran y comparan dos subconjuntos de las vistas del sistema. Por motivos de brevedad, los subconjuntos están restringidos a los nombres de vista que también contienen la cadena _event. Los subconjuntos tienen prefijos de nombre diferentes porque incluyen los dos sistemas de base de datos diferentes.

Nombre del entorno local 2017 Nombre del servicio en la nube
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions
   

Las dos listas de la tabla anterior son precisas a partir de junio del 2019. Pero el contenido de esta tabla puede quedar obsoleto, porque no se va a mantener. Para obtener listas precisas, ejecute la siguiente instrucción SELECT de T-SQL. Ejecute SELECT dos veces, una en cada sistema de base de datos.

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database\_%' { ESCAPE '\' } OR
         name LIKE 'server\_%' { ESCAPE '\' })
        AND name LIKE '%\_event%' { ESCAPE '\' }
        AND type = 'V'
    ORDER BY name;

Consulte también

Aplicaciones de capa de datos
Compatibilidad de DAC con las versiones y objetos de SQL Server
Implementar una aplicación de capa de datos
Supervisar aplicaciones de capa de datos
 
Vistas de administración dinámica de eventos extendidos
Vistas de catálogo de eventos extendidos (Transact-SQL)
 
XELite: biblioteca multiplataforma para leer XEvents de archivos XEL o secuencias en directo de SQL; publicada en mayo de 2019.
Read-SQLXEvent PowerShell cmdlet, publicado en junio de 2019.
Misterios de SQL: Seguimiento de causalidad frente a secuencia de eventos para sesiones de XEvent (blog publicado el 1 de abril de 2019)