Freigeben über


Erweiterte Ereignisübersicht

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Mit der XEvents-Architektur (Extended Events – erweiterte Ereignisse) können Benutzer so viele oder so wenig Daten sammeln, wie erforderlich, um die Leistung in SQL Server, Azure SQL-Datenbank und Azure SQL Managed Instance zu überwachen, zu identifizieren oder zu beheben. „Erweiterte Ereignisse“ kann in hohem Maß konfiguriert werden, ist leicht und lässt sich sehr gut skalieren. Weitere Informationen finden Sie unter Architektur über erweiterte Ereignisse.

„Erweiterte Ereignisse“ ersetzt die veraltete SQL-Ablaufverfolgung und SQL Server Profiler-Features.

Verwenden Sie Schnellstart: Erweiterte Ereignisse, um mit erweiterten Ereignissen zu beginnen.

Hinweis

Wenn Sie Azure SQL verwenden, erfahren Sie, wie sich Codebeispiele für Azure SQL-Datenbank und SQL Managed Instance unterscheiden können und erfahren außerdem mehr über erweiterte Ereignisse in Azure SQL-Datenbank.

Vorteile von erweiterten Ereignissen von

Erweiterte Ereignisse sind ein einfaches System zur Leistungsüberwachung, das minimale Systemressourcen verwendet und gleichzeitig eine detaillierte, ausführliche Ansicht des Datenbankmoduls bereitstellt. SQL Server Management Studio stellt eine grafische Benutzeroberfläche für erweiterte Ereignisse bereit, um Sitzungen zu erstellen, zu ändern und zu löschen sowie Sitzungsdaten anzuzeigen und zu analysieren. Weitere Informationen zur Unterstützung erweiterter Ereignisse in Management Studio finden Sie unter:

Konzepte für erweiterte Ereignisse

„Erweiterte Ereignisse“ basiert auf vorhandenen Konzepten aus der Ereignisablaufverfolgung für Windows, etwa einem Ereignis oder einem Ereignisconsumer, und führt neue Konzepte ein, wie Aktion und Prädikat.

Die folgende Tabelle enthält Dokumentationsreferenzen, um die Konzepte in erweiterten Ereignissen zu verstehen.

Artikel Beschreibung
Pakete für erweiterte Ereignisse 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 Beschreibt die Ereignisconsumer, die während einer Ereignissitzung Daten empfangen können.
Engine für erweiterte Ereignisse Beschreibt die Engine, die eine Sitzung für erweiterte Ereignisse implementiert und verwaltet.
Sitzungen für erweiterte Ereignisse Beschreibt die Sitzung für erweiterte Ereignisse.

Architektur von erweiterten Ereignissen

„Erweiterte Ereignisse“ ist ein Name für ein allgemeines Ereignisbehandlungssystem für Serversysteme. Die Infrastruktur für erweiterte Ereignisse unterstützt die Korrelation von Daten aus dem Datenbank-Engine sowie 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 SQL Server Management Studio, XEvent Profiler und dem Leistungsmonitor und 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 Engine für erweiterte Ereignisse finden Sie unter Engine für erweiterte Ereignisse.
  • 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 Ziele für erweiterte Ereignisse.
  • 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 Pakete für erweiterte Ereignisse.

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, der Transact-SQL verwendet.
  • 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 für Ihre -Umgebung erstellen.

Aufgabenbeschreibung 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. Sitzungen für erweiterte Ereignisse
Beschreibt, wie Sie Zieldaten anzeigen und aktualisieren. Anzeigen von Ereignisdaten in SQL Server Management Studio
Beschreibt, wie Sie die folgenden Tools von erweiterten Ereignissen zum Erstellen und Verwalten von erweiterten -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. SELECT- und JOIN-Anweisungen von Systemsichten für erweiterte Ereignisse in SQL Server
Beschreibt, wie Sie ermitteln, welche Ziele für erweiterte Ereignisse in den registrierten Paketen verfügbar sind. Ziele für erweiterte Ereignisse
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 finden, die Sie festlegen können, wenn Sie die ADD TARGET Klausel in CREATE EVENT SESSION oder ALTER EVENT SESSION Anweisungen verwenden. Ziele für erweiterte Ereignisse
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 die Quelle von Sperren identifiziert wird. 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 (DMVs) für erweiterte Ereignisse SELECT- und JOIN-Anweisungen von Systemsichten für erweiterte Ereignisse in SQL Server

Verwenden Sie die folgende T-SQL-Abfrage, um zu allen möglichen erweiterten Ereignisse und deren Beschreibungen zurückzukehren:

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
INNER 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 SQL Server-Instanzen geschrieben wurden, müssen leicht abgeändert werden, damit sie in Azure ausgeführt werden können. Eine Kategorie solcher Codebeispiele umfasst Katalogansichten, deren Namenspräfixe je nach Datenbank-Engine-Typ unterschiedlich sind:

  • 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 Ereignissitzungen auf Datenbankebene. SQL Server Management Studio (SSMS) unterstützt datenbankbezogene Ereignissitzungen 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. 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

Serverbezogene Sitzungen werden für verwaltete Instanzen empfohlen. 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 Katalogsichten 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 unterschiedliche Datenbank-Engine-Typen unterstützen.

Name in SQL Server und Azure SQL Managed Instance Name in Azure SQL-Datenbank und Azure SQL Managed Instance
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 aktuelle Liste zu erhalten:

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;