Inicio rápido: Eventos extendidos en SQL ServerQuickstart: Extended events in SQL Server

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions)

Los eventos extendidos son un sistema ligero de supervisión de rendimiento que permite a los usuarios recopilar los datos necesarios para supervisar y solucionar problemas en SQL Server.Extended events is a lightweight performance monitoring system that enables users to collect data needed to monitor and troubleshoot problems in SQL Server. Vea Introducción a los eventos extendidos para obtener más información sobre la arquitectura de eventos extendidos.See Extended events overview to learn more about the extended events architecture. Este artículo tiene como objetivo prestar ayuda al desarrollador de SQL que no está familiarizado con los eventos extendidos y que quiere crear una sesión de eventos en tan solo unos minutos.This article aims to help the SQL developer who is new to extended events, and who wants create an event session in just a few minutes. Mediante el uso de eventos extendidos, puede ver información sobre las operaciones internas del sistema de SQL y de su aplicación.By using extended events, you can see details about the inner operations of the SQL system and your application. Cuando crea una sesión de eventos extendidos, indica al sistema:When you create an extended event session, you tell the system:

  • Las repeticiones que le interesan.Which occurrences you are interested in.
  • Cómo quiere que el sistema le notifique los datos.How you want the system to report the data to you.

En este artículo se realizan las tareas siguientes:This article does the following:

  • Usar capturas de pantalla para ilustrar los clics en SSMS.exe que crean una sesión de eventos.Uses screenshots to illustrate the clicks in SSMS.exe that create an event session.
  • Correlacionar las capturas de pantalla con las instrucciones Transact-SQL equivalentes.Correlates the screenshots to equivalent Transact-SQL statements.
  • Explicar en detalle los términos y conceptos relativos a los clics y T-SQL para las sesiones de eventos.Explains in detail the terms and concepts behind the clicks and T-SQL for event sessions.
  • Demostrar cómo probar la sesión de eventos.Demonstrates how to test your event session.
  • Describir las alternativas en torno a los resultados:Describes the alternatives around results:
    • Captura de almacenamiento de los resultados.Storage capture of results.
    • Resultados procesados frente a los resultados sin procesar.Processed versus raw results.
    • Herramientas para ver los resultados de diferentes maneras y en diferentes escalas de tiempo.Tools for viewing the results in different ways and on different time scales.
  • Mostrar cómo puede buscar y detectar todos los eventos disponibles.Shows how you can search for and discover all the available events.
  • Proporcionar las relaciones de clave externa y de clave principal que están implícitas entre las vistas de administración dinámica (DMV) de los eventos extendidos.Provides the primary key and foreign key relationships that are implicit among the dynamic management views (DMVs) for extended events.
  • Describir la información adicional que se puede obtener en los artículos relacionados.Describes what more there is to learn in related articles.

A veces, los blogs y otras conversaciones informales hacen referencia a los eventos extendidos mediante la abreviatura xevents.Blogs and other informal conversations sometimes refer to extended events by the abbreviation xevents.

Nota

Para obtener información sobre los eventos extendidos de Azure SQL Database, incluidos los ejemplos de código, vea Eventos extendidos en SQL Database.For information about extended events in Azure SQL Database, including code samples, see Extended events in SQL Database.

Preparativos antes de la demostraciónPreparations before demo

Se necesitarán los siguientes pasos preliminares para realizar la próxima demostración.The following preliminaries would be required for you to actually perform the upcoming demonstration.

  1. Descarga de SQL Server Management Studio (SSMS)Download SQL Server Management Studio (SSMS)

    Cada mes debe instalar la última actualización mensual de SSMS.Each month you should install the latest monthly update of SSMS.

  2. Inicie sesión en Microsoft SQL Server 2014 o en una versión posterior.Log in to Microsoft SQL Server 2014 or higher.

  3. Asegúrese de que su cuenta tenga el permiso de servidor de ALTER ANY EVENT SESSION.Ensure that your account has the server permission of ALTER ANY EVENT SESSION.

Si está interesado, puede encontrar más información disponible sobre seguridad y permisos relacionados con los eventos extendidos al final de este artículo en el Apéndice.If interested, more details about security and permissions related to extended events are available at the end of this article in the Appendix.

Demostración de la integración de SSMSDemo of SSMS integration

SSMS.exe proporciona una excelente interfaz de usuario (IU) para los eventos extendidos.SSMS.exe provides an excellent user interface (UI) for extended events. La interfaz de usuario es tan útil que muchos usuarios no necesitan usar los eventos extendidos mediante Transact-SQL ni las vistas de administración dinámica (DMV) que tienen como objetivo dichos eventos.The UI is so good that many users have no need to engage with extended events by using Transact-SQL or the dynamic management views (DMVs) that target extended events.

En esta sección, puede ver los pasos de la interfaz de usuario para crear un evento extendido, y para ver los datos que notifica.In this section you can see the UI steps to create an extended event, and to see the data it reports. Después de estos pasos, puede obtener información sobre los conceptos implicados en los pasos para tener una mayor comprensión.After the steps, you can read about the concepts involved in the steps for a deeper understanding.

Pasos de la demostraciónSteps of demo

Puede comprender los pasos aunque decida no realizarlos.You can understand the steps even if you decide not to perform them. La demostración se inicia en el cuadro de diálogo Nueva sesión .The demonstration starts the New Session dialog. Procesamos sus cuatro páginas denominadas:We process its four pages named:

  • GeneralGeneral
  • EventosEvents
  • Almacenamiento de datosData Storage
  • AvanzadoAdvanced

El texto y las capturas de pantalla de ayuda pueden ser ligeramente inexactas cuando la interfaz de usuario de SSMS se modifica con el paso de los meses o años.The text and supporting screenshots can become slightly inexact when the SSMS UI is tweaked over the months or years. Aunque existan discrepancias o pequeñas diferencias, las capturas de pantalla siguen resultando útiles para la explicación.Yet the screenshots remain effective for explanation if the discrepancies are only minor.

  1. Conéctese a SSMS.Connect with SSMS.

  2. En el Explorador de objetos, haga clic en Administración > Eventos extendidos > Nueva sesión.In the Object Explorer, click Management > Extended Events > New Session. Es preferible usar el cuadro de diálogo Nueva sesión que el Asistente para nueva sesión, aunque ambos son similares.The New Session dialog is preferable to the New Session Wizard, although the two are similar to each other.

  3. En la parte superior izquierda, haga clic en la página General .In the upper-left, click the General page. Después, escriba SuSesión, o cualquier nombre que quiera, en el cuadro de texto Nombre de sesión .Then type YourSession, or any name you like, into the Session name text box. No pulse el botón Aceptar todavía, ya que aparece solo al final de la demostración.Do not press the OK button yet, that comes only at the end of the demo.

    Nueva sesión > General > Nombre de sesión

  4. En la parte superior izquierda, haga clic en la página Eventos y, después, haga clic en el botón Seleccionar .In the upper-left, click the Events page, and then click the Select button.

    Nueva sesión > Eventos > Seleccionar > Biblioteca de eventos, eventos seleccionados

  5. En el área Biblioteca de eventos, en la lista desplegable, elija Solo los nombres de evento.In the Event library area, in the drop-down list, choose Event names only.

    • Dentro del cuadro de texto, escriba sql, que filtra y reduce la larga lista de eventos disponibles mediante un operador contains .Into the text box, type in sql, which filters and reduces the long list of available events by using a contains operator.
    • Desplácese y haga clic en el evento denominado sql_statement_completed.Scroll and click the event named sql_statement_completed.
    • Haga clic en el botón de flecha derecha > para mover el evento al cuadro Eventos seleccionados .Click the right arrow button > to move the event to the Selected events box.
  6. Siga en la página Eventos y haga clic en el botón Configurar en el extremo derecho.Staying on the Events page, click the Configure button at the far right.

    Con el lateral izquierdo reducido para obtener una mejor visualización, en la siguiente captura de pantalla puede ver el área Opciones de configuración de eventos.With the left side chopped off for better display, in the following screenshot you can see the Event configuration options area.

    Nueva sesión > Eventos > Configurar > Filtro (predicado) > Campo

  7. Haga clic en la pestaña Filtro (predicado) . Después, haga clic en Haga clic aquí para agregar una cláusula para capturar todas las instrucciones SQL SELECT que tengan una cláusula HAVING.Click the Filter (Predicate) tab. Next, click Click here to add a clause, for the intention of capturing all SQL SELECT statements that have a HAVING clause.

  8. En la lista desplegable Campo , elija sqlserver.sql_text.In the Field drop-down list, and choose sqlserver.sql_text.

    • En Operador , elija un operador LIKE.For Operator choose a LIKE operator.
    • En Valor , escriba %SELECT%HAVING% .For Value type in %SELECT%HAVING%.

    Nota

    En este nombre de dos partes, sqlserver es el nombre del paquete y sql_text, el nombre del campo.In this two-part name, sqlserver is the package name and sql_text is the field name. El evento que hemos elegido anteriormente, sql_statement_completed, debe encontrarse en el mismo paquete que el campo que hemos elegido.The event we chose earlier, sql_statement_completed, must be in the same package as the field we choose.

  9. En la parte superior izquierda, haga clic en la página Almacenamiento de datos .In the upper-left, click the Data Storage page.

  10. En el área Destinos, haga clic en Haga clic aquí para agregar un destino.In the Targets area, click Click here to add a target.

    • En la lista desplegable Tipo , elija event_file.In the Type drop-down list, choose event_file.
    • Esto significa que los datos del evento se almacenarán en un archivo que podamos ver.This means the event data will be stored in a file that we can view.

    Nota

    No se puede usar Azure Blob Storage como destino de almacenamiento de datos en una instancia local de SQL Server.You can't use Azure Blob Storage as a data storage target in an on-premises instance of SQL Server.

    Nueva sesión > Almacenamiento de datos > Destinos > Tipo > event_file

  11. En el área Propiedades , escriba una ruta de acceso completa y un nombre de archivo en el cuadro de texto Nombre de archivo en el servidor .In the Properties area, type in a full path and file name into the File name on server text box.

    • La extensión del nombre de archivo debe ser .xel.The file name extension must be .xel.
    • Nuestra pequeña prueba necesitará menos de 1 MB de tamaño de archivo.Our little test will need less than 1 MB of file size.

    Nueva sesión > Avanzado > Latencia máxima de envío > Aceptar

  12. En la parte superior izquierda, haga clic en la página Advanced (Avanzado) .In the upper-left, click the Advanced page.

    • Reduce la latencia máxima de envío a 3 segundos.Reduce the Maximum dispatch latency down to 3 seconds.
    • Por último, haga clic en el botón Aceptar situado en la parte inferior.Finally, click the OK button at the bottom.
  13. Vuelva al Explorador de objetos, expanda Administración > Sesiones y verá el nuevo nodo de SuSesión.Back in the Object Explorer, expand Management > Sessions, and see the new node for YourSession.

    El nodo de su nueva sesión de eventos denominado SuSesión, en el Explorador de objetos, en Administración > Eventos extendidos > Sesiones

Editar la sesión de eventosEdit your event session

En el Explorador de objetos de SSMS, puede editar la sesión de eventos al hacer clic con el botón derecho en su nodo y, después, hacer clic en Propiedades.In the SSMS Object Explorer, you can edit your event session by right-clicking its node, and then clicking Properties. Se muestra el mismo cuadro de diálogo de varias páginas.The same multi-page dialog is displayed.

T-SQL correspondiente para la sesión de eventosCorresponding T-SQL for your event session

Ha usado la interfaz de usuario de SSMS para generar un script T-SQL que ha creado la sesión de eventos.You used the SSMS UI to generate a T-SQL script that created your event session. A continuación, puede ver el script generado:You can see the generated script as follows:

  • Haga clic con el botón derecho en el nodo de la sesión, haga clic en Incluir sesión como > CREATE to (CREATE para) > Portapapeles.Right-click your session node, click Script Session as > CREATE to > Clipboard.
  • Péguelo en cualquier editor de texto.Paste into any text editor.

A continuación, se encuentra la instrucción CREATE EVENT SESSION de T-SQL para SuSesión que se ha generado mediante sus clics en la interfaz de usuario:Next is the T-SQL CREATE EVENT SESSION statement for YourSession, which was generated by your clicks in the UI:

CREATE EVENT SESSION [YourSession]
    ON SERVER
    ADD EVENT sqlserver.sql_statement_completed
    (
        ACTION(sqlserver.sql_text)
        WHERE
        ( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
        )
    )
    ADD TARGET package0.event_file
    (SET
        filename = N'C:\Junk\YourSession_Target.xel',
        max_file_size = (2),
        max_rollover_files = (2)
    )
    WITH (
        MAX_MEMORY = 2048 KB,
        EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS,
        MAX_DISPATCH_LATENCY = 3 SECONDS,
        MAX_EVENT_SIZE = 0 KB,
        MEMORY_PARTITION_MODE = NONE,
        TRACK_CAUSALITY = OFF,
        STARTUP_STATE = OFF
    );
GO

Instrucción DROP previa a la sesión de eventosPre-DROP of the event session

Antes de la instrucción CREATE EVENT SESSION, quizás quiera emitir de manera condicional una instrucción DROP EVENT SESSION en caso de que el nombre ya exista.Before the CREATE EVENT SESSION statement, you might want to conditionally issue a DROP EVENT SESSION in case the name already exists.

IF EXISTS (SELECT *
      FROM sys.server_event_sessions
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;
END
go

Instrucción ALTER para iniciar o detener la sesión de eventosALTER to start and stop the event session

Cuando crea una sesión de eventos, el valor predeterminado consiste en no iniciar la ejecución automáticamente.When you create an event session, the default is for it to not start running automatically. Puede iniciar o detener la sesión de eventos en cualquier momento mediante la siguiente instrucción ALTER EVENT SESSION de T-SQL.You can start or stop your event session any time by using the following T-SQL ALTER EVENT SESSION statement.

ALTER EVENT SESSION [YourSession]
      ON SERVER
    --ON DATABASE
    STATE = START;   -- STOP;

Tiene la opción de indicar a la sesión de eventos que se inicie automáticamente cuando lo haga la instancia de SQL Server.You have the option of telling the event session to automatically start when the SQL Server instance is started. Vea la palabra clave STARTUP STATE = ON en CREATE EVENT SESSION.See the STARTUP STATE = ON keyword on CREATE EVENT SESSION.

  • La interfaz de usuario de SSMS ofrece una casilla correspondiente en la página Nueva sesión > General .The SSMS UI offers a corresponding check box on New Session > General page.

Probar la sesión de eventosTest your event session

Pruebe la sesión de eventos con estos sencillos pasos:Test your event session with these simple steps:

  1. En el Explorador de objetos de SSMS, haga clic con el botón derecho en el nodo de la sesión de eventos y, después, haga clic en Iniciar sesión.In the SSMS Object Explorer, right-click your event session node, and then click Start Session.
  2. Ejecute la instrucción SELECT...HAVING siguiente un par de veces.Run the following SELECT...HAVING statement a couple times.
    • Lo ideal sería que pudiera cambiar el valor HAVING Count entre las dos ejecuciones, alternando entre 2 y 3.Ideally you might change the HAVING Count value between the two runs, toggling between 2 and 3. Esto le permite ver las diferencias en los resultados.This enables you to see the differences in the results.
  3. Haga clic con el botón derecho en el nodo de la sesión y, después, haga clic en Detener sesión.Right-click your session node, and then click Stop Session.
  4. Lea la siguiente subsección sobre cómo usar SELECT y ver los resultados.Read the next subsection about how to SELECT and view the results.
SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o
            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) >= 3   --2     -- Try both values during session.
    ORDER BY
        c.name;

Para completar la información, aquí se muestra el resultado aproximado de la instrucción SELECT...HAVING anterior.Just for completeness, here is the approximate output from the preceding SELECT...HAVING.

/*** Approximate output, 6 rows, all HAVING Count >= 3:
name                   Count-Per-Column-Repeated-Name
---------------------  ------------------------------
event_group_type       4
event_group_type_desc  4
event_session_address  5
event_session_id       5
is_trigger_event       4
trace_event_id         3
**_/

Instrucción SELECT para obtener los resultados completos como XMLSELECT the full results as XML

En SSMS, ejecute la siguiente instrucción SELECT de T-SQL para devolver resultados donde cada fila proporciona los datos sobre una repetición de evento.In SSMS, run the following T-SQL SELECT to return results where each row provides the data about one event occurrence. La instrucción CAST AS XML facilita la visualización de los resultados.The CAST AS XML makes viewing the results easy.

Nota

El sistema de eventos siempre anexa un número largo al nombre de archivo _.xel* event_file que se ha especificado.The event system always appends a long number to the _.xel* event_file file name you specified. Antes de que pueda ejecutar la siguiente instrucción SELECT del archivo, debe copiar el nombre completo que ha proporcionado el sistema y pegarlo en la instrucción SELECT.Before you can run the following SELECT from the file, you must copy the full name given by the system, and paste it into the SELECT.

SELECT
        object_name,
        file_name,
        file_offset,
        event_data,
        'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!'
                AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
        CAST(event_data AS XML) AS [event_data_XML]
                -- TODO: In ssms.exe results grid, double-click this xml cell!
    FROM
        sys.fn_xe_file_target_read_file(
            'C:\Junk\YourSession_Target_0_131085363367310000.xel',
            null, null, null
        );

La instrucción SELECT anterior le proporciona dos maneras de ver los resultados completos de cualquier fila de evento determinada:The preceding SELECT gives you two ways to view the full results of any given event row:

  • Ejecute la instrucción SELECT en SSMS y, después, haga clic en una celda de la columna event_data_XML .Run the SELECT in SSMS, and then click a cell in the event_data_XML column. Esto resulta muy práctico.This is very handy.
  • Copie la larga cadena XML de una celda en la columna event_data .Copy the long XML string from a cell in the event_data column. Péguela en un editor de texto sencillo como Notepad.exe y guarde la cadena en un archivo con extensión .XML.Paste into any simple text editor like Notepad.exe, and save the string in a file with extension .XML. Después, abra el archivo .XML con un explorador.Then open the .XML file with a browser.

Mostrar los resultados de un eventoDisplay of results for one event

A continuación, podemos ver parte de los resultados que se encuentran en formato XML.Next we see part of the results, which are in XML format. Este XML aparece editado para que sea más corto para su visualización.The XML here is edited here to make it shorter for display. Tenga en cuenta que <data name="row_count"> muestra el valor de 6, que coincide con nuestras 6 filas de resultados que hemos mostrado anteriormente.Note that <data name="row_count"> displays a value of 6, which matches our 6 result rows displayed earlier. Y podemos ver la instrucción SELECT completa.And we can see the whole SELECT statement.

<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
  <data name="duration">
    <value>111021</value>
  </data>
  <data name="cpu_time">
    <value>109000</value>
  </data>
  <data name="physical_reads">
    <value>0</value>
  </data>
  <data name="last_row_count">
    <value>6</value>
  </data>
  <data name="offset">
    <value>0</value>
  </data>
  <data name="offset_end">
    <value>584</value>
  </data>
  <data name="statement">
    <value>SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o

            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) &gt;= 3   --2     -- Try both values during session.
    ORDER BY
        c.name</value>
  </data>
</event>

SSMS para mostrar resultadosSSMS to display results

Existen varias características avanzadas en la interfaz de usuario de SSMS que puede usar para ver los datos que se han capturado de un evento extendido.There are several advanced features in the SSMS UI you can use to view the data that is captured from an extended event. Puede encontrar información en:Details are at:

Los conceptos básicos comienzan con las opciones del menú contextual denominadas View Target Data (Ver datos de destino) y Watch Live Data (Observar datos en directo) .The basics start with context menu options labeled View Target Data and Watch Live Data.

View Target Data (Ver datos de destino)View Target Data

En el Explorador de objetos de SSMS, puede hacer clic con el botón derecho en el nodo de destino que se encuentra debajo del nodo de la sesión de eventos.In the SSMS Object Explorer, you can right-click the target node which is under your event session node. En el menú contextual, haga clic en View Target Data (Ver datos de destino) .In the context menu you click View Target Data. SSMS muestra los datos.SSMS displays the data.

La visualización no se actualiza ya que el evento notifica datos nuevos.The display is not updated as new data is reported by the event. Pero puede hacer clic en View Target Data (Ver datos de destino) de nuevo.But you can click View Target Data again.

View Target Data (Ver datos de destino), en SSMS, Administración > Eventos extendidos > Sesiones > SuSesión > package0.event_file, hacer clic con el botón derecho

Watch Live Data (Observar datos en directo)Watch Live Data

En el Explorador de objetos de SSMS, puede hacer clic con el botón derecho en el nodo de la sesión de eventos.In the SSMS Object Explorer, you can right-click your event session node. En el menú contextual, haga clic en Watch Live Data (Observar datos en directo) .In the context menu you click Watch Live Data. SSMS muestra los datos entrantes a medida que llegan en tiempo real.SSMS displays incoming data as it continues to arrive in real time.

Watch Live Data (Observar datos en directo), en SSMS, Administración > Eventos extendidos > Sesiones > SuSesión, hacer clic con el botón derecho

EscenariosScenarios

Existen incontables escenarios para el uso eficaz de los eventos extendidos.There are innumerable scenarios for the effective use of extended events. En los siguientes artículos se proporcionan escenarios de ejemplo que implican los bloqueos que se han realizado durante las consultas.The following articles provide example scenarios that involve the locks taken during queries.

En los siguientes artículos se describen escenarios específicos para las sesiones de eventos que tienen como objetivo la evaluación de los bloqueos.Specific scenarios for event sessions aimed at assessing locks are described in the following articles. En los artículos también se muestran algunas técnicas avanzadas, como el uso de @dbid y el de EXECUTE (@YourSqlString) dinámico:The articles also show some advanced techniques, such as using @dbid, and using the dynamic EXECUTE (@YourSqlString):

Términos y conceptos de los eventos extendidosTerms and concepts in extended events

En la siguiente tabla se enumeran los términos que se usan en los eventos extendidos, y se describe su significado.The following table lists the terms used for extended events, and describes their meanings.

TérminoTerm DescripciónDescription
sesión de eventosevent session Una construcción que se centra en torno a uno o más eventos, además de elementos complementarios como acciones y destinos.A construct centered around one or more events, plus supporting items like actions are targets. La instrucción CREATE EVENT SESSION construye cada sesión de eventos.The CREATE EVENT SESSION statement constructs each event session. Puede modificar una sesión de eventos para iniciarla y detenerla a su voluntad.You can ALTER an event session to start and stop it at will.

A veces, se hace referencia a una sesión de eventos solo como sesión, cuando el contexto lo aclara significa sesión de eventos.An event session is sometimes referred to as just a session, when the context clarifies it means event session.

Encontrará más información sobre las sesiones de eventos en SQL Server Extended Events Sessions.Further details about event sessions are described in: SQL Server Extended Events Sessions.
eventevent Una repetición específica en el sistema que se observa mediante una sesión de eventos activa.A specific occurrence in the system that is watched for by an active event session.

Por ejemplo, el evento sql_statement_completed representa el momento en que cualquier instrucción T-SQL se completa.For example, the sql_statement_completed event represents the moment that any given T-SQL statement completes. El evento puede notificar su duración y otros datos.The event can report its duration and other data.
Destinotarget Un elemento que recibe los datos de salida de un evento capturado.A item that receives the output data from a captured event. El destino le muestra los datos.The target displays the data to you.

Entre los ejemplos se incluye event_file, su elemento Cousin útil y ligero, y la memoria ring_buffer.Examples include the event_file, and its handy light-weight cousin the memory ring_buffer. El sofisticado destino histogram realiza un procesamiento de los datos antes de mostrarlos.The fancier histogram target performs some processing of your data before displaying it.

Puede usarse cualquier destino para cualquier sesión de eventos.Any target can be used for any event session. Para más información, consulte Destinos para eventos extendidos en SQL Server.For details, see Targets for Extended Events in SQL Server.
actionaction Un campo conocido del evento.A field known to the event. Los datos del campo se envían al destino.Data from the field is sent to the target. El campo de acción está estrechamente relacionado con el filtro de predicado.The action field is closely related to the predicate filter.
filtro de predicadopredicate filter Una prueba de datos en un campo de evento que se usa de forma que solo un subconjunto interesante de las repeticiones de evento se envíe al destino.A test of data in an event field, used so that only an interesting subset of event occurrences are sent to the target.

Por ejemplo, un filtro podría incluir solo esas repeticiones del evento sql_statement_completed donde la instrucción T-SQL incluía la cadena HAVING.For example, a filter could include only those sql_statement_completed event occurrences where the T-SQL statement contained the string HAVING.
Paquetepackage Un calificador de nombre adjunto a cada elemento de un conjunto de elementos que se centra en torno al núcleo de los eventos.A name qualifier attached to each item in a set of items that centers around a core of events.

Por ejemplo, un paquete puede tener eventos sobre texto T-SQL.For example, a package might have events about T-SQL text. Un evento puede tratar todas las instrucciones T-SQL en un lote delimitado por la instrucción GO.One event could be about all the T-SQL in a GO-delimited batch. Mientras tanto, otro evento más reducido trata sobre las instrucciones T-SQL individuales.Meanwhile another narrower event is about individual T-SQL statements. Además, para cualquier instrucción T-SQL, existen eventos de inicio y eventos completados.Further, for any one T-SQL statement, there is are start and completed events.

Los campos apropiados para los eventos también se encuentran en el paquete con los eventos.Fields appropriate for the events are also in the package with the events. La mayoría de los destinos se encuentran en package0 y se usan con eventos de muchos otros paquetes.Most targets are in package0 and are used with events from many other packages.

Cómo detectar los eventos disponibles en los paquetesHow to discover the available events in packages

La siguiente instrucción SELECT de T-SQL devuelve una fila para cada evento disponible cuyo nombre contenga la cadena de tres caracteres "sql".The following T-SQL SELECT returns a row for each available event whose name contains the three character string 'sql'. Por supuesto, puede editar el valor LIKE para buscar diferentes nombres de evento.Of course, you can edit the LIKE value to search for different event names. Las filas también denominan el paquete que contiene el evento.The rows also name the package that contains the event.

SELECT   -- Find an event you want.
        p.name         AS [Package-Name],
        o.object_type,
        o.name         AS [Object-Name],
        o.description  AS [Object-Descr],
        p.guid         AS [Package-Guid]
    FROM
              sys.dm_xe_packages  AS p
        JOIN  sys.dm_xe_objects   AS o
                ON  p.guid = o.package_guid
    WHERE
        o.object_type = 'event'   --'action'  --'target'
        AND
        p.name LIKE '%'
        AND
        o.name LIKE '%sql%'
    ORDER BY
        p.name, o.object_type, o.name;

La siguiente visualización muestra la fila que se ha devuelto, editada aquí en el formato de nombre de columna = valor.The following display shows the returned row, edited here into the format of column name = value. Los datos provienen del evento sql-statement_completed que se ha usado en los pasos anteriores del ejemplo.The data is from the sql-statement_completed event that was used in the preceding example steps. La frase de la columna Object-Descr es particularmente útil.The sentence for the Object-Descr column is particularly helpful.

Package-Name = sqlserver
object_type  = event
Object-Name  = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491

Otra opción de búsqueda es usar la interfaz de usuario de SSMS en el cuadro de diálogo Nueva sesión > Eventos > Biblioteca de eventos que se muestra en una captura de pantalla anterior.Another search option is to use the SSMS UI for New Session > Events > Event library dialog that is shown in a preceding screenshot.

Clases de evento de Seguimiento de SQL con eventos extendidosSQL Trace event classes, with extended events

En el siguiente vínculo encontrará una descripción sobre el uso de los eventos extendidos con las columnas y las clases de eventos de Seguimiento de SQL: Ver los eventos extendidos equivalentes a las clases de evento de Seguimiento de SQLA description of using extended events with SQL Trace event classes and columns is available at: View the Extended Events Equivalents to SQL Trace Event Classes

Seguimiento de eventos para Windows (ETW) con eventos extendidosEvent Tracing for Windows (ETW), with extended events

Las descripciones de cómo usar eventos extendidos con Seguimiento de eventos para Windows (ETW) están disponibles en:Descriptions of using extended events with Event Tracing for Windows (ETW) are available at:

Elementos adicionalesAdditional items

En esta sección se menciona brevemente un par de elementos varios.This section briefly mentions a couple of miscellaneous items.

Sesiones de eventos instaladas con SQL ServerEvent sessions installed with SQL Server

SQL Server incluye algunos eventos extendidos que ya se han creado.SQL Server comes with a few extended events already created. Todos están configurados para iniciarse cuando se inicie el sistema de SQL.All are configured to start whenever the SQL system is started. Estas sesiones de eventos recopilan datos que pueden resultar útiles si se produce un error del sistema.These event sessions gather data that might be helpful in case of a system error. Al igual que todos los eventos extendidos, consumen solo una pequeña cantidad de recursos y Microsoft recomienda que se dejen como están para ejecutarse.Like all extended events, they consume only tiny a amount of resources, and Microsoft recommends that they be left alone to run.

Puede ver estas sesiones de eventos en el Explorador de objetos de SSMS en Administración > Eventos extendidos > Sesiones.You can see these event sessions in the SSMS Object Explorer under Management > Extended Events > Sessions. En junio de 2016, la lista de estas sesiones de eventos instaladas es:As of June 2016, the list of these installed event sessions is:

  • AlwaysOn_healthAlwaysOn_health
  • system_healthsystem_health
  • telemetry_eventstelemetry_events

Proveedor de PowerShell para eventos extendidosPowerShell provider for extended events

Puede administrar los eventos extendidos de SQL Server mediante el proveedor de SQL Server PowerShell.You can manage SQL Server extended events by using the SQL Server PowerShell provider. Puede encontrar información en: Usar el proveedor de PowerShell para eventos extendidosDetails are at: Use the PowerShell Provider for Extended Events

Vistas del sistema para eventos extendidosSystem views for extended events

Las vistas del sistema para eventos extendidos incluyen:The system views for extended events include:

  • Vistas de catálogo: para obtener información sobre las sesiones de eventos que se han definido mediante CREATE EVENT SESSION.Catalog views: for information about event sessions that have been defined by CREATE EVENT SESSION.

  • Vistas de administración dinámica (DMV): para obtener información sobre sesiones de eventos que se están ejecutando activamente en estos momentos.Dynamic management views (DMVs): for information about event sessions are actively running at present.

SELECTs and JOINs From System Views for Extended Events in SQL Server (Instrucciones SELECT y JOIN en vistas del sistema para eventos extendidos en SQL Server) proporciona información sobre:SELECTs and JOINs From System Views for Extended Events in SQL Server - provides information about:

  • Cómo unir las vistas entre sí.How to join the views to each other.
  • Varias instrucciones SELECT útiles de las vistas.Several useful SELECTs from the views.
  • La correlación entre:The correlation between:
    • Las columnas de la vista.The view columns.
    • Cláusulas CREATE EVENT SESSION.CREATE EVENT SESSION clauses.
    • Los controles de interfaz de usuario de SSMS.The SSMS UI controls.

Apéndice: Instrucciones SELECT para averiguar el propietario del permiso por anticipadoAppendix: SELECTs to ascertain permission owner in advance

Los permisos que se mencionan en este artículo son:The permissions mentioned in this article are:

  • ALTER ANY EVENT SESSIONALTER ANY EVENT SESSION
  • VIEW SERVER STATEVIEW SERVER STATE
  • CONTROL SERVERCONTROL SERVER

Las siguientes instrucciones SELECT de Transact-SQL pueden notificar quién tiene estos permisos.The following Transact-SQL SELECT statements can report who has these permissions.

Permisos directos UNION más permisos derivados del rolUNION direct permissions plus role derived permissions

La siguiente instrucción SELECT...UNION ALL devuelve filas que muestran quién tiene los permisos necesarios para crear sesiones de eventos y consultar las vistas de catálogo del sistema de los eventos extendidos.The following SELECT...UNION ALL statement returns rows that show who has the necessary permissions for creating event sessions and querying the system catalog views for extended events.

-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes the permissions
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT
        'Owner-is-Principal'  AS [Type-That-Owns-Permission],
        NULL                  AS [Role-Name],
        prin.name             AS [Owner-Name],

        perm.permission_name
            COLLATE Latin1_General_CI_AS_KS_WS
            AS [Permission-Name]
    FROM
             sys.server_permissions  AS perm
        JOIN sys.server_principals   AS prin

            ON prin.principal_id = perm.grantee_principal_id
    WHERE
        perm.permission_name IN
            ('ALTER ANY EVENT SESSION',
            'VIEW SERVER STATE',
            'CONTROL SERVER')
UNION ALL

-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT
        'Owner-is-Role'
        , prin.name  -- [Role-Name]
        , CAST( (IsNull(pri2.name, N'No members'))
            AS nvarchar(128))
        , NULL
    FROM
        sys.server_role_members  AS rolm
        RIGHT OUTER JOIN sys.server_principals    AS prin
            ON prin.principal_id = rolm.role_principal_id
        LEFT OUTER JOIN sys.server_principals     AS pri2
            ON rolm.member_principal_id = pri2.principal_id
    WHERE
        prin.name = 'sysadmin'
    ORDER BY
        1,2,3,4;

HAS_PERMS_BY_NAME, funciónHAS_PERMS_BY_NAME function

La siguiente instrucción SELECT notifica sus permisos.The follow SELECT reports your permissions. Se basa en la función integrada HAS_PERMS_BY_NAME.It relies on the built-in function HAS_PERMS_BY_NAME.

Además, si tiene autoridad para suplantar temporalmente otras cuentas, puede quitar la marca del comentario de las instrucciones EXECUTE AS LOGIN y REVERT para consultar otras cuentas.Further, if you have authority to temporarily impersonate other accounts, you can uncomment the EXECUTE AS LOGIN and REVERT statements, to inquire about other accounts.

--EXECUTE AS LOGIN = 'AccountNameHere';
SELECT HAS_PERMS_BY_NAME
    (
       null
       , null
       , 'ALTER ANY EVENT SESSION'
    );
--REVERT;

Aquí se muestran vínculos a la documentación relacionada con estas instrucciones SELECT y con los permisos:Here are links to documentation related to these SELECTs, and to permissions: