Información general sobre Eventos extendidos

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

La arquitectura de Eventos extendidos (XE) permite a los usuarios recopilar tantos datos como sea necesario para supervisar, solucionar o identificar un problema de rendimiento en SQL Server, Azure SQL Database y Azure SQL Managed Instance. Eventos extendidos es muy configurable, ligero y ofrece una buena escalabilidad. Para obtener más información, consulte Arquitectura de Eventos extendidos.

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

Para empezar a trabajar con Eventos extendidos, usa Inicio rápido: Eventos extendidos.

Ventajas de Extended Events

Eventos extendidos es un sistema ligero de supervisión del rendimiento que usa recursos mínimos del sistema y proporcionar una vista detallada del motor de base de datos. SQL Server Management Studio proporciona una interfaz gráfica de usuario para Eventos extendidos que permite crear, modificar y colocar sesiones de eventos, así como mostrar y analizar los datos de las sesiones. Para más información sobre la compatibilidad con Eventos extendidos en Management Studio, consulta:

Conceptos de Eventos extendidos

Eventos extendidos se basa en conceptos existentes de Seguimiento de eventos para Windows, como un evento o consumidor de eventos, a la vez que presenta nuevos conceptos como acción y predicado.

En la tabla siguiente se proporcionan referencias de documentación para comprender los conceptos de Eventos extendidos.

Artículo Descripción
Paquetes de Eventos extendidos 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 Eventos extendidos Describe los consumidores de eventos que pueden recibir datos durante una sesión de eventos.
Motor de Eventos extendidos Describe el motor que implementa y administra una sesión de Extended Events.
Sesiones de Eventos extendidos 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 Eventos extendidos admite la correlación de datos del motor de base de datos y, 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 SQL Server Management Studio, 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 Eventos extendidos, consulta Motor de Eventos extendidos.
  • 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 obtener más información, consulta Destinos para Eventos extendidos.
  • 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, consulta Paquetes de Eventos extendidos.

Eventos Extendidos 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 que usa 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, consulta Usar la sesión system_health.

Tareas de Eventos extendidos

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 ambiente de SQL Server.

Descripción de la tarea Artículo
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. Sesiones de Eventos extendidos
Describe cómo ver y restaurar los datos de destino. Ver datos de eventos en SQL Server Management Studio
Describe cómo usar las herramientas de Eventos extendidos para crear administrar sesiones de Eventos extendidos. 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. Instrucciones SELECT y JOIN en vistas del sistema para Eventos extendidos en SQL Server
Describe cómo determinar los destinos de eventos extendidos que están disponibles en los paquetes registrados. Destinos de Eventos extendidos
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 buscar los parámetros que puedes establecer al usar la cláusula ADD TARGET en CREATE EVENT SESSION o las instrucciones ALTER EVENT SESSION. Destinos de Eventos extendidos
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 bloqueos. 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

Usa la consulta siguiente de T-SQL para enumerar todos los posibles eventos 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
INNER JOIN sys.dm_xe_object_columns AS col2
    ON col2.object_name = obj1.name
ORDER BY obj1.name,
    col2.name

Los ejemplos de código pueden diferir para Azure SQL Database y SQL Managed Instance

Algunos ejemplos de código de Transact-SQL escritos para SQL Server necesitan pequeños cambios para ejecutarse en Azure. Una categoría de estos ejemplos de código implica vistas de catálogo cuyos prefijos de nombre difieren en función del tipo de motor de base de datos:

  • server_ - prefijo para SQL Server y Azure SQL Managed Instance
  • database_ - prefijo para Azure SQL Database y SQL Managed Instance

Azure SQL Database admite solo sesiones de eventos con ámbito de base de datos. SQL Server Management Studio (SSMS) es totalmente compatible con sesiones de eventos con ámbito de base de datos de Azure SQL Database: en cada base de datos del Explorador de objetos aparece un nodo Eventos extendidos que contiene sesiones con ámbito de base de datos.

Azure SQL Managed Instance admite sesiones tanto con ámbito de base de datos como con ámbito de servidor. SSMS admite completamente sesiones con ámbito de servidor para SQL Managed Instance: en la carpeta Administración de cada instancia administrada del Explorador de objetos aparece un nodo Eventos extendidos que contiene todas las sesiones con ámbito de servidor.

Nota

En las instancias administradas, se recomienda usar sesiones con ámbito de servidor. Las sesiones con ámbito de base de datos no se muestran en el Explorador de objetos en SSMS para Azure SQL Managed Instance. Este tipo de sesiones solo se pueden consultar y administrar con Transact-SQL cuando se usa una instancia administrada.

Como ilustración, en la tabla siguiente se enumeran y comparan dos subconjuntos de las vistas de catálogo. 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 admiten diferentes motores de base de datos.

Nombre en SQL Server y Azure SQL Managed Instance Nombre en Azure SQL Database y Azure SQL Managed Instance
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 eran precisas a partir de marzo de 2022. Para obtener una lista actualizada, ejecuta la siguiente instrucción SELECT de Transact-SQL:

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;