Schnellstart: Erweiterte Ereignisse in SQL ServerQuickstart: Extended events in SQL Server

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Bei erweiterten Ereignissen handelt es sich um ein Lightweight-System zur Leistungsüberwachung, mit dem Benutzer Daten sammeln können, die zum Überwachen und Beheben von Problemen in SQL Server erforderlich sind.Extended events is a lightweight performance monitoring system that enables users to collect data needed to monitor and troubleshoot problems in SQL Server. Weitere Informationen zur Architektur erweiterter Ereignisse finden Sie unter Übersicht über erweiterte Ereignisse.See Extended events overview to learn more about the extended events architecture. Dieser Artikel ist darauf ausgerichtet, SQL-Entwickler zu unterstützen, die mit erweiterten Ereignissen nicht vertraut sind und in wenigen Minuten eine Ereignissitzung erstellen möchten.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. Mithilfe von erweiterten Ereignissen können Sie Details zu internen Vorgängen des SQL-System und Ihrer Anwendung anzeigen.By using extended events, you can see details about the inner operations of the SQL system and your application. Wenn Sie eine Sitzung für erweiterte Ereignisse erstellen, teilen Sie dem System Folgendes mit:When you create an extended event session, you tell the system:

  • An welchen Vorkommen Sie interessiert sind.Which occurrences you are interested in.
  • Auf welche Weise Ihnen das System die Daten melden soll.How you want the system to report the data to you.

Dieser Artikel bietet Folgendes:This article does the following:

  • Screenshots zum Veranschaulichen der Klicks in SSMS.exe, die eine Ereignissitzung erstellen.Uses screenshots to illustrate the clicks in SSMS.exe that create an event session.
  • Screenshots werden mit entsprechenden Transact-SQL-Anweisungen korreliert.Correlates the screenshots to equivalent Transact-SQL statements.
  • Ausführliche Erläuterung der Begriffe und Konzepte hinter den Klicks und T-SQL für Ereignissitzungen.Explains in detail the terms and concepts behind the clicks and T-SQL for event sessions.
  • Veranschaulichung der Vorgehensweise beim Testen von Ereignissitzungen.Demonstrates how to test your event session.
  • Beschreibung der Alternativen für Ergebnisse:Describes the alternatives around results:
    • Speicheraufnahme von Ergebnissen.Storage capture of results.
    • Verarbeitete Ergebnisse im Vergleich zu unverarbeiteten Ergebnissen.Processed versus raw results.
    • Tools zum Anzeigen der Ergebnisse auf verschiedene Arten und auf unterschiedlichen Zeitskalen.Tools for viewing the results in different ways and on different time scales.
  • Veranschaulichung, wie Sie alle verfügbaren Ereignisse suchen und entdecken können.Shows how you can search for and discover all the available events.
  • Bereitstellung der Beziehungen zwischen Primär- und Fremdschlüsseln, die unter dynamischen Verwaltungssichten (DMVs) für erweiterte Ereignisse implizit sind.Provides the primary key and foreign key relationships that are implicit among the dynamic management views (DMVs) for extended events.
  • Beschreibung der Inhalte von verwandten Artikeln.Describes what more there is to learn in related articles.

In Blogbeiträgen und anderen formlosen Konversationen wird häufig über die Abkürzung xeventsauf erweiterte Ereignisse verwiesen.Blogs and other informal conversations sometimes refer to extended events by the abbreviation xevents.

Hinweis

Informationen zu Unterschieden bei erweiterten Ereignissen zwischen Microsoft SQL Server und Azure SQL-Datenbank finden Sie unter Erweiterte Ereignisse in SQL-Datenbank.For information about extended event differences between Microsoft SQL Server and Azure SQL Database, see Extended events in SQL Database.

Vorbereitung vor der DemoPreparations before demo

Die folgenden Vorbereitungen wären erforderlich, damit Sie die nachfolgende Demo tatsächlich ausführen können.The following preliminaries would be required for you to actually perform the upcoming demonstration.

  1. Herunterladen von SQL Server Management Studio (SSMS)Download SQL Server Management Studio (SSMS)
  • Sie sollten jeden Monat das neueste monatliche Update von SSMS installieren.Each month you should install the latest monthly update of SSMS.
  1. Melden Sie sich bei Microsoft SQL Server 2014 oder höher oder in einer Datenbank von Azure SQL-Datenbank an, wobei SELECT @@version einen Wert zurückgibt, dessen erster Knoten 12 oder höher ist.Log in to Microsoft SQL Server 2014 or higher, or in to an Azure SQL Database database where SELECT @@version returns a value whose first node is 12 or higher.
  2. Stellen Sie sicher, dass Ihr Konto über die Serverberechtigung ALTER ANY EVENT SESSIONverfügt.Ensure that your account has the server permission of ALTER ANY EVENT SESSION.
  • Bei Interesse sind am Ende dieses Artikels im Anhangweitere Details zur Sicherheit und zu Berechtigungen verfügbar, die sich auf erweiterte Ereignisse beziehen.If interested, more details about security and permissons related to extended events are available at the end of this article in the Appendix.

Demo zur SSMS-IntegrationDemo of SSMS integration

„SSMS.exe“ bietet eine hervorragende Benutzeroberfläche für erweiterte Ereignisse.SSMS.exe provides an excellent user interface (UI) for extended events. Die Benutzeroberfläche ist so gut, dass sich viele Benutzer nicht mit erweiterten Ereignissen unter Verwendung von Transact-SQL oder dynamischen Verwaltungssichten (DMVs) befassen müssen, die auf erweiterte Ereignisse ausgerichtet sind.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.

In diesem Abschnitt werden die auf der Benutzeroberfläche zum Erstellen eines erweiterten Ereignisses und zum Anzeigen der gemeldeten Daten erforderlichen Schritte veranschaulicht.In this section you can see the UI steps to create an extended event, and to see the data it reports. Im Anschluss an die Schritte können Sie sich für ein tiefergehendes Verständnis mit den Informationen zu den Konzepten befassen, die in die Schritte einbezogen sind.After the steps, you can read about the concepts involved in the steps for a deeper understanding.

Schritte der DemoSteps of demo

Sie können die Schritte verstehen, selbst wenn Sie sich entscheiden, diese nicht auszuführen.You can understand the steps even if you decide not to perform them. Die Demo beginnt mit dem Dialogfeld Neue Sitzung .The demonstration starts the New Session dialog. Wir bearbeiten die vier zugehörigen Seiten, die folgende Bezeichnung aufweisen:We process its four pages named:

  • AllgemeinGeneral
  • EreignisseEvents
  • DatenspeicherData Storage
  • Erweitert:Advanced

Der Text und die unterstützenden Screenshots können im Laufe der Monate oder Jahre etwas ungenau werden, wenn die SSMS-Benutzeroberfläche optimiert wird.The text and supporting screenshots can become slightly inexact when the SSMS UI is tweaked over the months or years. Die Screenshots dienen jedoch weiterhin zur Erläuterung, wenn sie nur geringe Abweichungen aufweisen.Yet the screenshots remain effective for explanation if the discrepancies are only minor.

  1. Stellen Sie eine Verbindung mit SSMS her.Connect with SSMS.

  2. Klicken Sie im Objekt-Explorer auf Verwaltung > Erweiterte Ereignisse > Neue Sitzung.In the Object Explorer, click Management > Extended Events > New Session. Das Dialogfeld Neue Sitzung ist dabei dem Assistenten für neue Sitzungenvorzuziehen, obwohl die beiden einander ähnlich sind.The New Session dialog is preferable to the New Session Wizard, although the two are similar to each other.

  3. Klicken Sie in der linken oberen Ecke auf die Seite Allgemein .In the upper-left, click the General page. Geben Sie YourSessionoder einen beliebigen Namen in das Textfeld Sitzungsname ein.Then type YourSession, or any name you like, into the Session name text box. Drücken Sie noch nicht die Schaltfläche OK, die nur am Ende der Demo auftritt.Do not press the OK button yet, that comes only at the end of the demo.

    Neue Sitzung > Allgemein > Sitzungsname

  4. Klicken Sie in der linken oberen Ecke auf die Seite Ereignisse , und klicken Sie dann auf die Schaltfläche Auswählen .In the upper-left, click the Events page, and then click the Select button.

    Neue Sitzung > Ereignisse > Auswählen > Ereignisbibliothek, Ausgewählte Ereignisse

  5. Wählen Sie im Bereich Ereignisbibliothek in der Dropdownliste Nur Ereignisnamen aus.In the Event library area, in the drop-down list, choose Event names only.

    • Geben Sie sqlin das Textfeld ein, wodurch die lange Liste der verfügbaren Ereignisse mithilfe eines Enthält -Operators gefiltert und somit verkürzt wird.Into the text box, type in sql, which filters and reduces the long list of available events by using a contains operator.
    • Scrollen Sie zum Ereignis sql_statement_completed, und klicken Sie anschließend darauf.Scroll and click the event named sql_statement_completed.
    • Klicken Sie auf den Pfeil nach rechts > , um das Ereignis in das Feld Ausgewählte Ereignisse zu verschieben.Click the right arrow button > to move the event to the Selected events box.
  6. Bleiben Sie auf der Seite Ereignisse , und klicken Sie ganz rechts auf die Schaltfläche Konfigurieren .Staying on the Events page, click the Configure button at the far right.

    • Im folgenden Screenshot sehen Sie den Bereich Optionen für die Ereigniskonfiguration, wobei die linke Seite zur besseren Ansicht abgeschnitten ist.With the left side chopped off for better display, in the following screenshot you can see the Event configuration options area.

    Neue Sitzung > Ereignisse > Konfigurieren > Filter (Prädikat) > Feld

  7. Klicken Sie auf die Registerkarte Filter (Prädikat) . Klicken Sie anschließend auf Klicken Sie hier, um eine Klausel hinzuzufügen, um alle SQL SELECT-Anweisungen zu erfassen, die eine HAVING-Klausel aufweisen.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. Wählen Sie in der Dropdownliste Feld die Option sqlserver.sql_textaus.In the Field drop-down list, and choose sqlserver.sql_text.

    • Wählen Sie für Operator einen LIKE-Operator aus.For Operator choose a LIKE operator.
    • Geben Sie für Wert die Option %SELECT%HAVING% ein.For Value type in %SELECT%HAVING%.

    Hinweis

    In diesem zweiteiligen Namen stellt sqlserver den Paketnamen und sql_text den Feldnamen dar.In this two part name, sqlserver is the package name, and sql_text is the field name. Das zuvor von uns ausgewählte Ereignis, sql_statement_completed muss sich in demselben Paket wie das ausgewählte Feld befinden.The event we chose earlier, sql_statement_completed must be in the same package as the field we choose.

  9. Klicken Sie in der linken oberen Ecke auf die Seite Datenspeicher .In the upper-left, click the Data Storage page.

  10. Klicken Sie im Bereich Ziele auf Klicken Sie hier, um ein Ziel hinzuzufügen.In the Targets area, click Click here to add a target.

    • Wählen Sie in der Dropdownliste Typ den Eintrag event_fileaus.In the Type drop-down list, choose event_file.
    • Dies bedeutet, dass die Ereignisdaten in einer Datei gespeichert werden, die wir anzeigen können.This means the event data will be stored in a file that we can view.

    Neue Sitzung > Datenspeicher > Ziele > Typ > event_file

  11. Geben Sie im Bereich Eigenschaften einen vollständigen Pfad und Namen in das Textfeld Dateiname auf Server ein.In the Properties area, type in a full path and file name into the File name on server text box.

    • Die Dateierweiterung muss XELsein.The file name extension must be .xel.
    • Unser kleiner Test erfordert eine Dateigröße von weniger als 1 MB.Our little test will need less than 1 MB of file size.

    Neue Sitzung > Erweitert > Maximale Verteilungslatenzzeit > OK

  12. Klicken Sie in der linken oberen Ecke auf die Seite Erweitert.In the upper-left, click the Advanced page.

    • Verringern Sie den Wert für Maximale Verteilungslatenzzeit auf 3 Sekunden.Reduce the Maximum dispatch latency down to 3 seconds.
    • Klicken Sie abschließend unten auf die Schaltfläche OK .Finally, click the OK button at the bottom.
  13. Erweitern Sie dann im Objekt-Explorer die Option Verwaltung > Sitzungen, und beachten Sie den neuen Knoten für YourSession.Back in the Object Explorer, expand Management > Sessions, and see the new node for YourSession.

    Knoten für Ihre neue Ereignissitzung namens „YourSession“ im Objekt-Explorer unter „Verwaltung > Erweiterte Ereignisse > Sitzungen“

Bearbeiten der EreignissitzungEdit your event session

Im Objekt-Explorervon SSMS können Sie die Ereignissitzung bearbeiten, indem Sie mit der rechten Maustaste auf ihren Knoten klicken. Anschließend klicken Sie auf Eigenschaften.In the SSMS Object Explorer, you can edit your event session by right-clicking its node, and then clicking Properties. Dasselbe mehrseitige Dialogfeld wird angezeigt.The same multi-page dialog is displayed.

Entsprechendes T-SQL für die EreignissitzungCorresponding T-SQL for your event session

Sie haben die SSMS-Benutzeroberfläche verwendet, um ein T-SQL-Skript zu generieren, das Ihre Ereignissitzung erstellt hat.You used the SSMS UI to generate a T-SQL script that created your event session. Sie können das generierte Skript wie folgt anzeigen:You can see the generated script as follows:

  • Klicken Sie mit der rechten Maustaste auf Skript für Sitzung als > CREATE in > Zwischenablage.Right-click your session node, click Script Session as > CREATE to > Clipboard.
  • Fügen Sie die Auswahl in einen beliebigen Text-Editor ein.Paste into any text editor.

Als Nächstes folgt die T-SQL CREATE EVENT SESSION-Anweisung für YourSession, die durch Klicken auf der Benutzeroberfläche generiert wurde: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

Hinweis

Für Azure SQL-Datenbank würde in der vorherigen CREATE EVENT SESSION-Anweisung anstelle der ON SERVER-Klausel entsprechend ON DATABASE verwendet werden.For Azure SQL Database, in the preceding CREATE EVENT SESSION statement, the ON SERVER clause would be instead be ON DATABASE.

Weitere Informationen zu Unterschieden bei erweiterten Ereignissen zwischen Microsoft SQL Server und Azure SQL-Datenbank finden Sie unter Erweiterte Ereignisse in SQL-Datenbank.For more information about extended event differences between Microsoft SQL Server and Azure SQL Database, see Extended events in SQL Database.

Vorgezogene Ablage der EreignissitzungPre-DROP of the event session

Vor der CREATE EVENT SESSION-Anweisung sollten Sie eine DROP EVENT SESSION-Anweisung für den Fall bedingt ausgeben, dass der Name bereits vorhanden ist.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    -- If Microsoft SQL Server.
    --FROM sys.database_event_sessions  -- If Azure SQL Database in the cloud.
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;    -- If Microsoft SQL Server.
        --ON DATABASE;  -- If Azure SQL Database.
END
go

ALTER zum Starten oder Beenden der EreignissitzungALTER to start and stop the event session

Wenn Sie eine Ereignissitzung erstellen, wird sie gemäß der Standardeinstellung nicht automatisch gestartet.When you create an event session, the default is for it to not start running automatically. Sie starten die Ereignissitzung jederzeit mithilfe der folgenden T-SQL ALTER EVENT SESSION-Anweisung starten oder beenden.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;

Sie haben die Möglichkeit, der Ereignissitzung mitzuteilen, dass sie beim Start der SQL Server-Instanz automatisch startet.You have the option of telling the event session to automatically start when the SQL Server instance is started. Weitere Informationen finden Sie unter dem Schlüsselwort STARTUP STATE = ON für CREATE EVENT SESSION.See the STARTUP STATE = ON keyword on CREATE EVENT SESSION.

  • Die SSMS-Benutzeroberfläche bietet ein entsprechendes Kontrollkästchen auf der Seite Neue Sitzung > Allgemein .The SSMS UI offers a corresponding check box on New Session > General page.

Testen der EreignissitzungTest your event session

Verwenden Sie die folgenden einfachen Schritte zum Testen Ihrer Ereignissitzung:Test your event session with these simple steps:

  1. Klicken Sie im Objekt-Explorervon SSMS mit der rechten Maustaste auf den Ereignissitzungsknoten, und klicken Sie dann auf Sitzung starten.In the SSMS Object Explorer, right-click your event session node, and then click Start Session.
  2. Führen Sie die folgende SELECT...HAVING -Anweisung mehrmals aus.Run the following SELECT...HAVING statement a couple times.
    • Im Idealfall können Sie den HAVING Count -Wert zwischen den beiden Testläufen ändern, wobei Sie zwischen 2 und 3 wechseln.Ideally you might change the HAVING Count value between the two runs, toggling between 2 and 3. Dadurch können Sie die Unterschiede in den Ergebnissen erkennen.This enables you to see the differences in the results.
  3. Klicken Sie mit der rechten Maustaste auf den Sitzungsknoten, und klicken Sie dann auf Sitzung beenden.Right-click your session node, and then click Stop Session.
  4. Lesen Sie den nächsten Unterabschnitt zum Auswählen und Anzeigen der Ergebnisse.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;

Aus Gründen der Vollständigkeit folgt hier die ungefähre Ausgabe der vorherigen SELECT...HAVING-Anweisung.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
***/

Auswählen der vollständigen Ergebnisse als XMLSELECT the full results as XML

Führen Sie in SSMS die folgende T-SQL SELECT-Anweisung aus, um Ergebnisse zurückzugeben, bei denen jede Zeile die Daten zu einem Ereignisvorkommen bereitstellt.In SSMS, run the following T-SQL SELECT to return results where each row provides the data about one event occurrence. Die CAST AS XML-Anweisung vereinfacht die Anzeige der Ergebnisse.The CAST AS XML makes viewing the results easy.

Hinweis

Das Ereignissystem fügt immer eine lange Zahl an den von Ihnen angegebenen Dateinamen für „ .xel event_file“ an.The event system always appends a long number to the .xel event_file file name you specified. Bevor Sie die folgende SELECT-Anweisung aus der Datei ausführen können, müssen Sie den vom System angegebenen vollständigen Namen kopieren und in die SELECT-Anweisung einfügen.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
        );

Die vorherige SELECT-Anweisung bietet zwei Möglichkeiten zum Anzeigen der vollständigen Ergebnisse einer bestimmten Ereigniszeile:The preceding SELECT gives you two ways to view the full results of any given event row:

  • Führen Sie die SELECT-Anweisung in SSMS aus, und klicken Sie dann in der Spalte event_data_XML auf eine Zelle.Run the SELECT in SSMS, and then click a cell in the event_data_XML column. Das ist sehr praktisch.This is very handy.
  • Kopieren Sie die lange XML-Zeichenfolge aus einer Zelle in die Spalte event_data .Copy the long XML string from a cell in the event_data column. Fügen Sie sie in einen einfachen Text-Editor wie Notepad.exe ein, und speichern Sie die Zeichenfolge in einer Datei mit der Erweiterung XML.Paste into any simple text editor like Notepad.exe, and save the string in a file with extension .XML. Öffnen Sie dann die XML-Datei mit einem Browser.Then open the .XML file with a browser.

Anzeigen der Ergebnisse für ein EreignisDisplay of results for one event

Als Nächstes wird ein Teil der Ergebnisse im XML-Format angezeigt.Next we see part of the results, which are in XML format. Der XML-Code wird hier bearbeitet, um ihn für die Anzeige zu verkürzen.The XML here is edited here to make it shorter for display. Beachten Sie, dass <data name="row_count"> einen Wert von 6anzeigt, der mit den zuvor angezeigten sechs Ergebniszeilen übereinstimmt.Note that <data name="row_count"> displays a value of 6, which matches our 6 result rows displayed earlier. Und es wird die vollständige SELECT-Anweisung angezeigt.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 zum Anzeigen von ErgebnissenSSMS to display results

Die SSMS-Benutzeroberfläche verfügt über zahlreiche Features, mit denen Sie die Daten anzeigen können, die von einem erweiterten Ereignis erfasst werden.There are several advanced features in the SSMS UI you can use to view the data that is captured from an extended event. Weitere Informationen finden Sie unter:Details are at:

Die Grundlagen beginnen mit Kontextmenüoptionen, die mit Anzeigen von Zieldaten und Anzeigen von Livedatenbezeichnet sind.The basics start with context menu options labeled View Target Data and Watch Live Data.

Anzeigen von ZieldatenView Target Data

Im Objekt-Explorervon SSMS können Sie mit der rechten Maustaste auf den Zielknoten klicken, der sich unter Ihrem Sitzungsereignisknoten befindet.In the SSMS Object Explorer, you can right-click the target node which is under your event session node. Klicken Sie im Kontextmenü auf Zieldaten anzeigen.In the context menu you click View Target Data. Die Daten werden von SSMS angezeigt.SSMS displays the data.

Die Anzeige wird nicht aktualisiert, da neue Daten vom Ereignis gemeldet werden.The display is not updated as new data is reported by the event. Sie können jedoch erneut auf Zieldaten anzeigen klicken.But you can click View Target Data again.

Zieldaten anzeigen, in SSMS, Verwaltung > Erweiterte Ereignisse > Sitzungen > YourSession > package0.event_file, mit der rechten Maustaste klicken

Anzeigen von LivedatenWatch Live Data

Im Objekt-Explorervon SSMS können Sie mit der rechten Maustaste auf Ihren Sitzungsereignisknoten klicken.In the SSMS Object Explorer, you can right-click your event session node. Klicken Sie im Kontextmenü auf Livedaten anzeigen.In the context menu you click Watch Live Data. Eingehende Daten werden beim Eintreffen von SSMS in Echtzeit angezeigt.SSMS displays incoming data as it continues to arrive in real time.

Livedaten anzeigen, in SSMS, Verwaltung > Erweiterte Ereignisse > Sitzungen > YourSession, mit der rechten Maustaste klicken

SzenarienScenarios

Es gibt unzählige Szenarien für die effektive Verwendung von erweiterten Ereignissen.There are innumerable scenarios for the effective use of extended events. Die folgenden Artikel bieten Beispielszenarien, die Sperren einbeziehen, die während der Abfragen eingerichtet wurden.The following articles provide example scenarios that involve the locks taken during queries.

Bestimmte Szenarien für Ereignissitzungen, die auf den Zugriff von Sperren ausgerichtet sind, werden in den folgenden Artikeln beschrieben.Specific scenarios for event sessions aimed at assessing locks are described in the following articles. Die Artikel zeigen auch einige erweiterten Techniken, z. B. die Verwendung von @dbid und der dynamischen EXECUTE (@YourSqlString)-Anweisung:The articles also show some advanced techniques, such as using @dbid, and using the dynamic EXECUTE (@YourSqlString):

Begriffe und Konzepte für erweiterte EreignisseTerms and concepts in extended events

In der folgenden Tabelle sind die für erweiterte Ereignisse verwendeten Begriffe aufgeführt. Zudem werden ihre Bedeutungen beschrieben.The following table lists the terms used for extended events, and describes their meanings.

BegriffTerm und BeschreibungDescription
Ereignissitzungevent session Ein Konstrukt, das um mindestens ein Ereignis angeordnet ist, sowie unterstützende Elemente (wie Aktionen) stellen Ziele dar.A construct centered around one or more events, plus supporting items like actions are targets. Die CREATE EVENT SESSION-Anweisung erstellt jede Ereignissitzung.The CREATE EVENT SESSION statement constructs each event session. Sie können eine Ereignissitzung mithilfe der ALTER-Anweisung bei Bedarf starten und beenden.You can ALTER an event session to start and stop it at will.

Eine Ereignissitzung wird gelegentlich nur als Sitzungbezeichnet, wenn der Kontext verdeutlicht, dass es sich um eine Ereignissitzunghandelt.An event session is sometimes referred to as just a session, when the context clarifies it means event session.

Weitere Informationen zu Ereignissitzungen finden Sie unter: SQL Server Extended Events Sessions (Erweiterte Ereignissitzungen in SQL Server).Further details about event sessions are described in: SQL Server Extended Events Sessions.
Ereignisevent Ein bestimmtes Vorkommen im System, das von einer aktiven Ereignissitzung überwacht wird.A specific occurrence in the system that is watched for by an active event session.

Das Ereignis sql_statement_completed stellt z. B. den Zeitpunkt dar, zu dem jede angegebene T-SQL-Anweisung abgeschlossen wird.For example, the sql_statement_completed event represents the moment that any given T-SQL statement completes. Das Ereignis kann seine Dauer und andere Daten melden.The event can report its duration and other data.
targettarget Ein Element, das die Ausgabedaten eines erfassten Ereignisses empfängt.A item that receives the output data from a captured event. Das Ziel zeigt Ihnen die Daten an.The target displays the data to you.

Beispiele hierfür sind event_fileund das verwandte kompakte Ereignis ring_bufferfür den Speicher.Examples include the event_file, and its handy light-weight cousin the memory ring_buffer. Das ausgefallenere Ziel histogram verarbeitet Ihre Daten vor der Anzeige.The fancier histogram target performs some processing of your data before displaying it.

Sie können für jede Ereignissitzung beliebige Ziele verwenden.Any target can be used for any event session. Details finden Sie unter Ziele für erweiterte Ereignisse in SQL Server.For details, see Targets for Extended Events in SQL Server.
actionaction Ein Feld, das dem Ereignis bekannt ist.A field known to the event. Daten aus dem Feld werden an das Ziel gesendet.Data from the field is sent to the target. Das Aktionsfeld ist eng mit dem Prädikatfilterverknüpft.The action field is closely related to the predicate filter.
Prädikatfilterpredicate filter Ein Test für die Daten in einem Ereignisfeld, der dazu verwendet wird, dass nur eine interessante Teilmenge der Ereignisvorkommen an das Ziel gesendet wird.A test of data in an event field, used so that only an interesting subset of event occurrences are sent to the target.

Ein Filter kann beispielsweise nur die sql_statement_completed -Ereignisvorkommen einbeziehen, für die die T-SQL-Anweisung die Zeichenfolge HAVINGenthält.For example, a filter could include only those sql_statement_completed event occurrences where the T-SQL statement contained the string HAVING.
Paketpackage Ein Namensqualifizierer, der jedem Element in einem Satz von Elementen angefügt wird, die um einen Kern von Ereignissen herum angeordnet sind.A name qualifier attached to each item in a set of items that centers around a core of events.

Beispielsweise kann ein Paket Ereignisse zum T-SQL-Text enthalten.For example, a package might have events about T-SQL text. Ein Ereignis könnte sich auf alle T-SQL-Anweisungen in einem durch GO getrennten Batch beziehen.One event could be about all the T-SQL in a GO-delimited batch. Unterdessen bezieht sich ein anderes begrenzteres Ereignis auf einzelne T-SQL-Anweisungen.Meanwhile another narrower event is about individual T-SQL statements. Darüber hinaus gibt es für jede T-SQL-Anweisung Ereignisse für den Start und für den Abschluss.Further, for any one T-SQL statement, there is are start and completed events.

Zudem befinden sich in dem Paket mit den Ereignissen auch für die Ereignisse geeignete Felder.Fields appropriate for the events are also in the package with the events. Die meisten Ziele befinden sich in package0 und sie werden mit Ereignissen aus vielen anderen Paketen verwendet.Most targets are in package0 and are used with events from many other packages.

Ermitteln der verfügbaren Ereignisse in PaketenHow to discover the available events in packages

Die folgende T-SQL SELECT-Anweisung gibt eine Zeile für alle verfügbaren Ereignisse zurück, deren Name die drei Zeichen umfassende Zeichenfolge „sql“ enthält.The following T-SQL SELECT returns a row for each available event whose name contains the three character string 'sql'. Natürlich können Sie den LIKE-Wert bearbeiten, um andere Ereignisnamen zu suchen.Of course, you can edit the LIKE value to search for different event names. Die Zeilen benennen auch das Paket, das das Ereignis enthält.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;

Die folgende Anzeige zeigt die zurückgegebene Zeile, die hier im Format „Spaltenname = Wert“ bearbeitet wurde.The following display shows the returned row, edited here into the format of column name = value. Die Daten stammen aus dem sql-statement_completed -Ereignis, das in den vorherigen Beispielschritten verwendet wurde.The data is from the sql-statement_completed event that was used in the preceding example steps. Der Satz für die Spalte „Object-Descr“ ist besonders hilfreich.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

Eine weitere Option für die Suche ist die Verwendung der SSMS-Benutzeroberfläche für das Dialogfeld Neue Sitzung > Ereignisse > Ereignisbibliothek , das in einem vorhergehenden Screenshot veranschaulicht wurde.Another search option is to use the SSMS UI for New Session > Events > Event library dialog that is shown in a preceding screenshot.

Ereignisklassen für die SQL-Ablaufverfolgung, mit erweiterten EreignissenSQL Trace event classes, with extended events

Informationen zur Verwendung erweiterter Ereignisse mit Ereignisklassen und -spalten der SQL-Ablaufverfolgung finden Sie unter: Anzeigen der Entsprechungen von erweiterten Ereignissen für SQL-AblaufverfolgungsklassenA 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

Ereignisablaufverfolgung für Windows (ETW), mit erweiterten EreignissenEvent Tracing for Windows (ETW), with extended events

Beschreibungen zur Verwendung von erweiterter Ereignissen mit der Ereignisablaufverfolgung für Windows (ETW) finden Sie unter:Descriptions of using extended events with Event Tracing for Windows (ETW) are available at:

Die ETW-Ereignisse sind nicht in den erweiterten Ereignissen für Azure SQL-Datenbank verfügbar.The ETW events are not available in extended events on Azure SQL Database.

Zusätzliche ElementeAdditional items

In diesem Abschnitt werden einige verschiedene Elemente kurz erwähnt.This section briefly mentions a couple of miscellaneous items.

Mit SQL Server installierte EreignissitzungenEvent sessions installed with SQL Server

Im Lieferumfang von SQL Server befinden sind einige bereits erstellte erweiterte Ereignisse.SQL Server comes with a few extended events already created. Alle Ereignisse sind so konfiguriert, dass sie bei jedem Start des SQL-Systems gestartet werden.All are configured to start whenever the SQL system is started. Diese Ereignissitzungen erfassen Daten, die im Falle eines Systemfehlers hilfreich sein können.These event sessions gather data that might be helpful in case of a system error. Wie alle erweiterten Ereignisse belegen sie nur geringe Mengen von Ressourcen und Microsoft empfiehlt, dass sie weiterhin unverändert ausgeführt werden.Like all extended events, they consume only tiny a amount of resources, and Microsoft recommends that they be left alone to run.

Sie können diese Ereignissitzungen im Objekt-Explorer von SSMS unter Verwaltung > Erweiterte Ereignisse > Sitzungenanzeigen.You can see these event sessions in the SSMS Object Explorer under Management > Extended Events > Sessions. Ab Juni 2016 sieht die Liste dieser installierten Ereignissitzungen wie folgt aus:As of June 2016, the list of these installed event sessions is:

  • AlwaysOn_healthAlwaysOn_health
  • system_healthsystem_health
  • telemetry_eventstelemetry_events

PowerShell-Anbieter für erweiterte EreignissePowerShell provider for extended events

Sie können erweiterte SQL Server-Ereignisse mithilfe des SQL Server PowerShell-Anbieters verwalten.You can manage SQL Server extended events by using the SQL Server PowerShell provider. Weitere Informationen finden Sie unter: Verwenden des PowerShell-Anbieters für erweiterte EreignisseDetails are at: Use the PowerShell Provider for Extended Events

Systemansichten für erweiterte EreignisseSystem views for extended events

Die Systemansichten für erweiterte Ereignisse umfassen Folgendes:The system views for extended events include:

  • Katalogsichten: Für Informationen zu Ereignissitzungen, die durch die CREATE EVENT SESSION-Anweisung definiert wurden.Catalog views: for information about event sessions that have been defined by CREATE EVENT SESSION.

  • Dynamische Verwaltungssichten (DMVs): Für Informationen zu Ereignissitzungen, die zurzeit aktiv ausgeführt werden.Dynamic management views (DMVs): for information about event sessions are actively running at present.

SELECT- und JOIN-Anweisungen von Systemsichten für erweiterte Ereignisse in SQL Server – Stellt Informationen zu Folgendem bereit:SELECTs and JOINs From System Views for Extended Events in SQL Server - provides information about:

  • Vorgehensweise beim Verknüpfen der Ansichten miteinander.How to join the views to each other.

  • Verschiedene hilfreiche SELECT-Anweisungen aus den Sichten.Several useful SELECTs from the views.

  • Die Korrelation zwischen:The correlation between:

    • SichtspaltenThe view columns.
    • CREATE EVENT SESSION-KlauselnCREATE EVENT SESSION clauses.
    • Steuerelemente der SSMS-BenutzeroberflächeThe SSMS UI controls.

Codebeispiele können für Azure SQL-Datenbank abweichend sein.Code examples can differ for Azure SQL Database

Einige Transact-SQL-Codebeispiele, die für lokale SQL Server-Instanzen geschrieben wurden, müssen leicht abgeändert werden, damit sie in Azure SQL-Datenbank in der Cloud ausgeführt werden können.Some Transact-SQL code examples written for SQL Server on-premises need small changes to run on Azure SQL Database service in the cloud. Eine Kategorie solcher Codebeispiele umfasst Systemsichten, deren Namenspräfixe sich zwischen den beiden Datenbanksystemen leicht unterscheiden:One catagory of such code examples involves system views whose name prefixess differ slightly between the two database systems:

  • server_   -   Präfix für lokale Instanzserver_   -   prefix for on-premises
  • database_   -   Präfix für Azure SQL-Datenbank in der Clouddatabase_   -   prefix for Azure SQL DB service in the cloud

Zur Veranschaulichung werden in der folgenden Tabelle zwei Teilmengen der Systemsichten aufgelistet und verglichen.For illustration, the following table lists and compares two subsets of the system views. Aus Platzgründen dürfen die Teilmengen nur Namen anzeigen, die ebenfalls die Zeichenfolge _event enthalten.For brevity, the subsets are restricted to view names that also contains the string _event. Die Namenspräfixe der Teilmengen unterscheiden sich, da sie aus zwei unterschiedlichen Datenbanksystemen stammen.The subsets have differing name prefixes because they come the two different database systems.

Name aus der lokalen 2017-InstanzName from on-premises 2017 Name aus dem ClouddienstName from cloud service
server_event_notificationsserver_event_notifications
server_event_session_actionsserver_event_session_actions
server_event_session_eventsserver_event_session_events
server_event_session_fieldsserver_event_session_fields
server_event_session_targetsserver_event_session_targets
server_event_sessionsserver_event_sessions
server_eventsserver_events
server_trigger_eventsserver_trigger_events
database_event_session_actionsdatabase_event_session_actions
database_event_session_eventsdatabase_event_session_events
database_event_session_fieldsdatabase_event_session_fields
database_event_session_targetsdatabase_event_session_targets
database_event_sessionsdatabase_event_sessions
   

Die beiden Listen in der vorangehenden Tabelle weisen den exakten Stand von Juni 2019 auf.The two lists in the preceding table are accurate as of June 2019. Der Inhalt der Tabelle wird jedoch möglicherweise veraltet sein, da dieser hier nicht aktualisiert wird.But the table contents here may become outdated, because its content will not be maintained here. Führen Sie die folgende SELECT-Anweisung von T-SQL aus, um genaue Listen zu erhalten.For accurate lists, run the following T-SQL SELECT statement. Führen Sie die SELECT-Anweisung zweimal aus – einmal pro Datenbanksystem.Run the SELECT twice, once on each database system.

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;

Anhang: SELECT-Anweisungen zur Vorabermittlung des BerechtigungsbesitzersAppendix: SELECTs to ascertain permission owner in advance

In diesem Artikel erwähnte Berechtigungen:The permissions mentioned in this article are:

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

Mithilfe der folgenden Transact-SQL SELECT-Anweisungen kann gemeldet werden, wer über diese Berechtigungen verfügt.The following Transact-SQL SELECT statements can report who has these permissions.

Direkte UNION-Berechtigungen sowie von Rollen abgeleitete BerechtigungenUNION direct permissions plus role derived permissions

Die folgende SELECT...UNION ALL-Anweisung gibt Zeilen zurück, die angeben, wer über die erforderlichen Berechtigungen zum Erstellen von Ereignissitzungen und zum Abfragen der Systemkatalogsichten für erweiterte Ereignisse verfügt.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-FunktionHAS_PERMS_BY_NAME function

Die folgende SELECT-Anweisung meldet Ihre Berechtigungen.The follow SELECT reports your permissions. Sie beruht auf der integrierten Funktion HAS_PERMS_BY_NAME.It relies on the built-in function HAS_PERMS_BY_NAME.

Wenn Sie zudem über die Berechtigung verfügen, temporär die Identität anderer Konten anzunehmen , können Sie die Auskommentierung der EXECUTE AS LOGIN - und REVERT-Anweisungen aufheben, um sich über die anderen Konten zu informieren.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;

Hier folgen Links zu Dokumentationen, die sich auf diese SELECT-Anweisungen und auf Berechtigungen beziehen:Here are links to documentation related to these SELECTs, and to permissions: