Übersicht über erweiterte Ereignisse

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Die Architektur für erweiterte Ereignisse ermöglicht es Benutzern, so viele oder so wenige Daten zu sammeln, wie erforderlich sind, um ein Leistungsproblem in SQL Server, Azure SQL-Datenbank und Azure SQL Managed Instance zu beheben oder zu identifizieren. Erweiterte Ereignisse sind in hohem Maße konfigurierbar, leicht und können sehr gut skaliert werden. Weitere Informationen finden Sie unter Architektur für erweiterte Ereignisse.

Erweiterte Ereignisse ersetzen die veralteten SQL-Ablaufverfolgungs- und SQL Server Profiler Features.

Testen Sie XEvents: Schnellstart: Erweiterte Ereignisse in SQL Server.

Hinweis

Azure SQL-Datenbank unterstützt nur Sitzungen auf Datenbankebene. Erfahren Sie, wie Sich Codebeispiele für Azure SQL Datenbank und SQL Managed Instance unterscheiden können, sowie weitere Informationen zu erweiterten Ereignissen in Azure SQL-Datenbank.

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. Hier erfahren Sie mehr über diese Erweiterungen:

Konzepte für erweiterte Ereignisse

SQL Server erweiterten Ereignisse baut auf vorhandenen Konzepten auf, z. B. einem Ereignis oder einem Ereignisverbraucher, 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 erweiterter Ereignisse

„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 Server und unter bestimmten Bedingungen die Korrelation von Daten aus dem Betriebssystem und 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

  • Ein vollständig konfigurierbarer Ereignisbehandlungsmechanismus, der auf Transact-SQL basiert.

  • 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.

Aufgaben für erweiterte Ereignisse

Mithilfe von Management Studio oder Transact-SQL zum Ausführen von Transact-SQL Data Definition Language (DDL)-Anweisungen, zum Nutzen dynamischer Verwaltungsansichten und -funktionen oder Katalogansichten können Sie einfache oder komplexe SQL Server Lösungen zur Problembehandlung für erweiterte Ereignisse für Ihre SQL Server Umgebung erstellen.

Taskbeschreibung Artikel
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 Tools für erweiterte Ereignisse verwenden, um Ihre SQL Server Sitzungen für erweiterte Ereignisse zu erstellen und zu verwalten. 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, wie ermittelt wird, welche Abfragen die Sperre, den Plan der Abfrage und den Transact-SQL-Stapel zum Zeitpunkt der Sperre enthalten. 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 Katalogansichten und der dynamischen Verwaltungssichten (DMVs) 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 Ereignisse und ihre 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 sich für Azure SQL-Datenbank und SQL Managed Instance unterscheiden.

Einige Transact-SQL-Codebeispiele, die für lokale SQL Server-Instanzen geschrieben wurden, müssen leicht abgeändert werden, damit sie 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 SQL Server und Azure SQL Managed Instance
  • database_ - Präfix für Azure SQL-Datenbank und SQL Managed Instance

Azure SQL-Datenbank unterstützt nur Sitzungen auf Datenbankebene. SQL Server Management Studio (SSMS) unterstützt datenbankbezogene Sitzungen für Azure SQL-Datenbank vollständig: der Knoten Erweiterte Ereignisse mit datenbankbezogenen Sitzungen wird unter jeder Datenbank im Objekt-Explorer angezeigt.

Azure SQL Managed Instance unterstützt sowohl datenbankbezogene Sitzungen als auch serverbezogene Sitzungen. Serverbezogene Sitzungen werden für verwaltete Instanzen empfohlen. SSMS unterstützt vollständig serverbezogene Sitzungen für SQL Managed Instance: Der Knoten Erweiterte Ereignisse mit allen serverbezogenen Sitzungen wird unter dem Ordner Verwaltung für jede verwaltete Instanz im Objekt-Explorer angezeigt.

Hinweis

Datenbankbezogene Sitzungen werden im Objekt-Explorer in SSMS für Azure SQL Managed Instance nicht angezeigt. Datenbankbezogene Sitzungen können nur mit Transact-SQL bei Verwendung einer verwalteten Instanz abgefragt und verwaltet werden.

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 SQL Server 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 zeigen den Stand von März 2022. Führen Sie die folgende SELECT-Anweisung (Transact-SQL) aus, um eine genaue Liste zu erhalten:

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;

Siehe auch

Nächste Schritte