Übersicht über erweiterte Ereignisse

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen) JaAzure SQL-Datenbank

SQL Server Die Funktionalität von „Erweiterte Ereignisse“ ermöglicht es Benutzern, Daten in dem Umfang zu sammeln, der erforderlich ist, um Leistungsproblem zu erkennen oder zu beheben. „Erweiterte Ereignisse“ kann konfiguriert werden und lässt sich sehr gut skalieren.

Erweiterte Ereignisse ersetzen die veraltete SQL-Ablaufverfolgung und SQL Server Profiler-Features.

Weitere Informationen zu „Erweiterte Ereignisse“ finden Sie unter Schnellstart: Erweiterte Ereignisse in SQL Server.

Vorteile von erweiterten Ereignissen von SQL Server

„Erweiterte Ereignisse“ ist ein schlankes Leistungsüberwachungssystem, das minimale Leistungsressourcen verwendet. SQL Server Management Studio stellt eine grafische Benutzeroberfläche für erweiterte Ereignisse bereit, um Sitzungen zu erstellen und zu ändern sowie Sitzungsdaten anzuzeigen und zu analysieren. Weitere Informationen über diese Erweiterungen finden Sie unter: |Verwalten von Ereignissitzungen im Objekt-Explorer |Verwenden von SSMS XEvent Profiler

Konzepte für erweiterte Ereignisse

SQL Server „Erweiterte Ereignisse“ basiert auf vorhandenen Konzepten, etwa einem Ereignis oder einem Ereignisconsumer, verwendet Konzepte aus der Ereignisablaufverfolgung für Windows und führt neue Konzepte ein.

In der folgenden Tabelle werden die Konzepte von "Erweiterte Ereignisse" beschrieben.

Thema BESCHREIBUNG
Pakete für erweiterte Ereignisse von SQL Server Beschreibt die „Erweiterte Ereignisse“-Pakete, die Objekte enthalten. Diese Objekte werden verwendet, um Daten abzurufen und zu verarbeiten, wenn eine „Erweiterte Ereignisse“-Sitzung ausgeführt wird.
Ziele für erweiterte Ereignisse von SQL Server Beschreibt die Ereignisconsumer, die während einer Ereignissitzung Daten empfangen können.
Engine für erweiterte Ereignisse von SQL Server Beschreibt die Engine, die eine Sitzung für erweiterte Ereignisse implementiert und verwaltet.
Sitzungen für erweiterte Ereignisse von SQL Server Beschreibt die Sitzung für erweiterte Ereignisse.
   

Architektur von erweiterten Ereignissen

„Erweiterte Ereignisse“ ist unser Name für ein allgemeines Ereignisbehandlungssystem für Serversysteme. Die Infrastruktur für erweiterte Ereignisse unterstützt die Korrelation von Daten aus SQL Serversowie unter bestimmten Umständen die Korrelation von Daten aus dem Betriebssystem und aus Datenbankanwendungen. Für Daten vom Betriebssystem muss die Ausgabe der erweiterten Ereignisse an die Ereignisablaufverfolgung für Windows (ETW) weitergeleitet werden. ETW kann die Ereignisdaten mit Betriebssystem- oder Anwendungsereignisdaten korrelieren.

Alle Anwendungen weisen Ausführungspunkte auf, die sowohl innerhalb der Anwendung als auch außerhalb nützlich sind. In der Anwendung kann die asynchrone Verarbeitung in die Warteschlange eingereiht werden, wobei Informationen zugrunde gelegt werden, die bei der ersten Ausführung eines Tasks gesammelt wurden. Außerhalb der Anwendung stellen Ausführungspunkte Überwachungshilfsprogrammen Informationen bereit. In den Informationen sind die Verhaltens- und Leistungsmerkmale der überwachten Anwendung beschrieben.

Erweiterte Ereignisse unterstützen die Verwendung von Ereignisdaten außerhalb eines Prozesses. Diese Daten werden in der Regel entweder von Benutzern, die ein Produkt mithilfe der Leistungsüberwachung verwalten oder unterstützen, oder von Benutzern verwendet, die Anwendungen für ein Produkt zu Debugzwecken entwickeln. Daten werden mithilfe von Tools wie XEvent Profiler und dem Leistungsmonitor, T-SQL oder Windows-Befehlszeilentools genutzt oder analysiert.

Das Design von erweiterten Ereignissen zeichnet sich durch die folgenden zentralen Aspekte aus:

  • Die Engine für erweiterte Ereignisse ist ereignisagnostisch. In der Engine kann jedes beliebige Ereignis an jedes beliebige Ziel gebunden werden, weil die Engine nicht durch den Ereignisinhalt eingeschränkt ist. Weitere Informationen zum Modul für erweiterte Ereignisse finden Sie unter SQL Server Extended Events Engine.

  • Ereignisse werden von Ereignisconsumern getrennt, die in erweiterten Ereignissen als Ziele bezeichnet werden. Das bedeutet, dass jedes Ziel jedes Ereignis empfangen kann. Zusätzlich kann jedes ausgelöste Ereignis automatisch vom Ziel verarbeitet werden, das dann wiederum die Protokollierung ausführen oder zusätzlichen Ereigniskontext bereitstellen kann. Weitere Informationen finden Sie unter SQL Server Extended Events Targets.

  • Ereignisse unterscheiden sich von der Aktion, die ausgeführt werden soll, wenn ein Ereignis auftritt. Dies führt dazu, dass jede beliebige Aktion jedem beliebigen Ereignis zugeordnet werden kann.

  • Mithilfe von Prädikaten kann dynamisch gefiltert werden, wenn Ereignisdaten aufgezeichnet werden sollen. Dynamisches Filtern erhöht die Flexibilität der „Erweiterte Ereignisse“-Infrastruktur. Weitere Informationen finden Sie unter SQL Server Extended Events Packages.

Erweiterte Ereignisse können Ereignisdaten synchron generieren (und asynchron verarbeiten), wodurch eine flexible Lösung für die Ereignisbehandlung bereitgestellt wird. Außerdem bieten erweiterte Ereignisse die folgenden Funktionen:

  • Eine im gesamten Serversystem einheitliche Methode für die Ereignisbehandlung, wobei die Benutzer dennoch die Möglichkeit haben, einzelne Ereignisse für die Problembehandlung zu isolieren.

  • Integration mit und Unterstützung von vorhandenen ETW-Tools

  • Einen vollständig konfigurierbaren Ereignisbehandlungsmechanismus auf Grundlage von Transact-SQL.

  • Die Möglichkeit zur dynamischen Überwachung aktiver Prozesse mit minimaler Beeinträchtigung dieser Prozesse.

  • Eine standardmäßige Systemintegritätssitzung, die ohne merkliche Auswirkungen auf die Leistung ausgeführt wird. In der Sitzung werden Systemdaten erfasst, mit deren Hilfe Sie Leistungsprobleme beheben können. Weitere Informationen finden Sie unter Verwenden der system_health-Sitzung.

Tasks für erweiterte Ereignisse

Indem Sie Management Studio oder Transact-SQL zum Ausführen von Transact-SQL-DDL-Anweisungen (Datendefinitionssprache, Data Definition Language) verwenden sowie dynamische Verwaltungssichten und Funktionen oder Katalogsichten nutzen, können Sie einfache oder komplexe Problembehandlungslösungen für erweiterte Ereignisse von SQL Server für Ihre SQL Server-Umgebung erstellen.

Taskbeschreibung Thema
Verwenden Sie den Objekt-Explorer , um Ereignissitzungen zu verwalten. Verwalten von Ereignissitzungen im Objekt-Explorer
Beschreibt, wie Sie eine Sitzung für erweiterte Ereignisse erstellen. Erstellen einer Sitzung für erweiterte Ereignisse
Beschreibt, wie Sie Zieldaten anzeigen und aktualisieren. Erweiterte Ansicht von Zieldaten aus erweiterten Ereignissen in SQL Server
Beschreibt, wie Sie die folgenden Tools von erweiterten Ereignissen zum Erstellen und Verwalten von erweiterten SQL Server -Ereignissitzungen verwenden: Tools für erweiterte Ereignisse
Beschreibt, wie Sie eine Sitzung für erweiterte Ereignisse ändern. Ändern einer Sitzung für erweiterte Ereignisse
Beschreibt, wie Sie Informationen zu den den Ereignissen zugeordneten Feldern abrufen. Abrufen der Felder für alle Ereignisse
Beschreibt, wie Sie herausfinden, welche Ereignisse in den registrierten Paketen verfügbar sind. Anzeigen der Ereignisse für registrierte Pakete
Beschreibt, wie Sie ermitteln, welche Ziele für erweiterte Ereignisse in den registrierten Paketen verfügbar sind. Anzeigen der Ziele von erweiterten Ereignissen für registrierte Pakete
Beschreibt, wie Sie die Ereignisse und Aktionen für erweiterte Ereignisse anzeigen, die den einzelnen SQL-Ablaufverfolgungsereignissen und deren zugeordneten Spalten entsprechen. Anzeigen der Entsprechungen von erweiterten Ereignissen für SQL-Ablaufverfolgungsklassen
Beschreibt, wie Sie die Parameter suchen, die sich festlegen lassen, wenn Sie das ADD TARGET-Argument in CREATE EVENT SESSION oder ALTER EVENT SESSION verwenden. Abrufen der konfigurierbaren Parameter für das ADD TARGET-Argument
Beschreibt, wie Sie ein vorhandenes SQL-Ablaufverfolgungsskript in eine Sitzung für erweiterte Ereignisse konvertieren. Konvertieren eines vorhandenen SQL-Ablaufverfolgungsskripts in eine Sitzung für erweiterte Ereignisse
Beschreibt die Ermittlung der gesperrten Abfragen, des Plans der Abfrage und des Transact-SQL -Stapels zum Zeitpunkt der Sperrung. Feststellen, welche Abfragen Sperren enthalten
Beschreibt, wie Sie die Quelle von Sperren identifizieren, die die Datenbankleistung beeinträchtigen. Suchen der Objekte, die über die meisten Sperren verfügen
Beschreibt, wie Sie anhand von erweiterten Ereignissen mit der Ereignisablaufverfolgung für Windows die Systemaktivität überwachen. Überwachen der Systemaktivität mit erweiterten Ereignissen
Verwenden der Katalogsichten und dynamischen Verwaltungssichten für erweiterte Ereignisse SELECT- und JOIN-Anweisungen von Systemsichten für erweiterte Ereignisse in SQL Server
   

Verwenden Sie die folgende Transact-SQL-Abfrage (T-SQL), um alle möglichen erweiterten Ereignisse und deren Beschreibungen aufzulisten:

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

Codebeispiele können für Azure SQL-Datenbank abweichend sein.

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. Eine Kategorie solcher Codebeispiele umfasst Systemsichten, deren Namenspräfixe sich zwischen den beiden Datenbanksystemen leicht unterscheiden:

  • server_   -   Präfix für lokale Instanzen
  • database_   -   Präfix für Azure SQL-Datenbank

Zur Veranschaulichung werden in der folgenden Tabelle zwei Teilmengen der Systemsichten aufgelistet und verglichen. Aus Platzgründen sind diese Teilmengen auf Sichtnamen beschränkt, die auch die Zeichenfolge _event enthalten. Die Namenspräfixe der Teilmengen unterscheiden sich, da sie aus zwei unterschiedlichen Datenbanksystemen stammen.

Name aus der lokalen 2017-Instanz Name aus dem Clouddienst
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
   

Die beiden Listen in der vorangehenden Tabelle weisen den exakten Stand von Juni 2019 auf. Der Inhalt der Tabelle wird jedoch möglicherweise veraltet sein, da dieser hier nicht aktualisiert wird. Führen Sie die folgende SELECT-Anweisung von T-SQL aus, um genaue Listen zu erhalten. Führen Sie die SELECT-Anweisung zweimal aus – einmal pro Datenbanksystem.

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;

Weitere Informationen

Datenebenenanwendungen
DAC-Unterstützung für SQL Server-Objekte und -Versionen
Bereitstellen einer Datenebenenanwendung
Überwachen von Datenebenenanwendungen
 
Dynamische Verwaltungssichten für erweiterte Ereignisse
Katalogsichten für erweiterte Ereignisse (Transact-SQL)
 
XELite: Plattformübergreifende Bibliothek zum Lesen von XEvents aus XEL-Dateien oder SQL-Livestreams (Veröffentlicht: Mai 2019).
PowerShell-Cmdlet Read-SQLXEvent (Veröffentlicht: Juni 2019).
SQL Mysteries: Causality tracking vs Event Sequence for XEvent Sessions (Blogbeitrag, der am 1. April 2019 veröffentlicht wurde)