Übersicht über erweiterte Ereignisse

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL-Datenbank Azure SQL Managed Instance Yes

Mit der Erweiterten Ereignisarchitektur können Benutzer so viel oder so wenig Daten 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 sehr konfigurierbar, leicht und skaliert sehr gut. Weitere Informationen finden Sie unter "Erweiterte Ereignisarchitektur".

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

Geben Sie XEvents einen Versuch: Schnellstart: Erweiterte Ereignisse in SQL Server.

Hinweis

Azure SQL-Datenbank unterstützt nur datenbankbezogene Sitzungen. Erfahren Sie, wie Sich Codebeispiele für Azure SQL-Datenbank und SQL Managed Instance und mehr über erweiterte Ereignisse in Azure SQL-Datenbank unterscheiden können.

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 finden Sie weitere Informationen zu diesen Erweiterungen:

Erweiterte Ereignisse-Konzepte

SQL Server erweiterten Ereignisse basiert auf vorhandenen Konzepten, 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.

Erweiterte Ereignisarchitektur

„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 den 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

Wenn Sie Management Studio oder Transact-SQL verwenden, um Transact-SQL Data Definition Language (DDL)-Anweisungen auszuführen, verwenden Sie dynamische Verwaltungsansichten und -funktionen oder Katalogansichten, können Sie einfache oder komplexe SQL Server Problembehandlungslösungen 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 erweiterte Ereignisse-Tools verwenden, um Ihre SQL Server Erweiterten Ereignisse-Sitzungen 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 Sie bestimmen, welche Abfragen die Sperre, den Plan der Abfrage und den Transact-SQL-Stapel zum Zeitpunkt der Sperre halten. 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 Verwaltungsansichten (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 auflisten:

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 Codebeispiele für Transact-SQL, die für SQL Server lokal geschrieben wurden, benötigen kleine Änderungen, die in der Cloud ausgeführt werden. 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 datenbankbezogene Sitzungen. SQL Server Management Studio (SSMS) unterstützt vollständig datenbankbezogene Sitzungen für Azure SQL-Datenbank: Ein Knoten mit erweiterten Ereignissen, der datenbankbezogene Sitzungen enthält, wird unter jeder Datenbank in Objekt-Explorer angezeigt.

Azure SQL Managed Instance unterstützt sowohl Datenbanksitzungen als auch serverbezogene Sitzungen. Serverbezogene Sitzungen werden für verwaltete Instanzen empfohlen. SSMS unterstützt vollständig serverbezogene Sitzungen für SQL Managed Instance: Ein Knoten mit erweiterten Ereignissen, der alle serverbezogenen Sitzungen enthält, wird unter dem Verwaltungsordner für jede verwaltete Instanz in Objekt-Explorer angezeigt.

Hinweis

Datenbankbezogene Sitzungen werden in Objekt-Explorer in SSMS für Azure SQL Managed Instance nicht angezeigt. Datenbankbezogene Sitzungen können nur bei Verwendung einer verwalteten Instanz abgefragt und mit Transact-SQL 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 vorherigen Tabelle sind ab März 2022 genau. Der Inhalt der Tabelle wird jedoch möglicherweise veraltet sein, da dieser hier nicht aktualisiert wird. Eine genaue Liste finden Sie in der folgenden T-SQL SELECT-Anweisung.

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