Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Die XEvents-Architektur (Extended Events) ermöglicht Es Benutzern, so viele oder so wenig Daten zu sammeln, wie erforderlich, um die Leistung in SQL Server, Azure SQL-Datenbank, azure SQL Managed Instance und SQL-Datenbank in Fabric 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 der erweiterten Ereignisse.
„Erweiterte Ereignisse“ ersetzen die veraltete SQL-Ablaufverfolgung sowie die Funktionen von SQL Server Profiler.
Verwenden Sie Schnellstart: Erweiterte Ereignisse, um mit erweiterten Ereignissen zu beginnen.
Hinweis
Für Azure SQL-Datenbank, SQL-Datenbank in Fabric und SQL Managed Instance können Codebeispiele variieren , da die Dateien für das event_file Ziel in Azure Storage gespeichert werden. Weitere Informationen finden Sie unter "Erweiterte Ereignisse" in Azure SQL.
Vorteile von Extended Events
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 basieren auf den vorhandenen Konzepten aus der Ereignisablaufverfolgung für Windows (ETW), z. B. Ereignis - und Ereignisverbraucher, und führt neue Konzepte wie Aktion und Prädikat ein.
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 Ereigniskonsumenten, die während einer Ereignissitzung Daten empfangen können. |
| Engine für erweiterte Ereignisse | Beschreibt das Modul, das eine Sitzung mit erweiterten Ereignissen implementiert und verwaltet. |
| Sitzungen für erweiterte Ereignisse | Beschreibt die Extended Events-Sitzung. |
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. Im Fall des Betriebssystems muss die Ausgabe von Extended Events an Event Tracing for Windows (ETW) gesendet 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 Extended Events-Engine ist nicht an bestimmte Ereignisse gebunden. 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 über die Extended Events-Engine finden Sie unter 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 "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
Mit Management Studio oder Transact-SQL zum Ausführen von Transact-SQL-DDL-Anweisungen sowie zum Verwenden dynamischer Verwaltungssichten und -funktionen oder Katalogsichten können Sie einfache oder komplexe Lösungen zur Problembehandlung mit SQL Server Extended Events für Ihre SQL Server-Umgebung erstellen.
| Aufgabenbeschreibung | Artikel |
|---|---|
| Verwenden Sie den Objekt-Explorer , um Ereignissitzungen zu verwalten. | Verwalten von Ereignissitzungen im Objekt-Explorer |
| Beschreibt, wie Zielobjekte für verfügbare erweiterte Ereignisse verwendet werden. | Ziele für erweiterte Ereignisse |
| Beschreibt, wie Sie Zieldaten anzeigen und aktualisieren. | Anzeigen von Ereignisdaten in SQL Server Management Studio |
| Beschreibt die Architektur von Extended Events-Sitzungen. | Sitzungen für erweiterte Ereignisse |
| Beschreibt, wie Sie Extended Events-Tools zum Erstellen und Verwalten Ihrer Extended Events-Sitzungen verwenden. | Tools für erweiterte Ereignisse |
| Beschreibt, wie Sie eine Extended Events-Sitzung ändern. | Ändern einer Sitzung für erweiterte Ereignisse |
| Beschreibt, wie Sie Informationen zu den den Ereignissen zugeordneten Feldern abrufen. | Felder für alle Ereignisse abrufen |
| Beschreibt, wie Sie herausfinden, welche Ereignisse in den registrierten Paketen verfügbar sind. | SELECT- und JOIN-Anweisungen von Systemsichten für erweiterte Ereignisse |
| Beschreibt, wie Sie die Extended Events-Ereignisse und -Aktionen anzeigen, die jedem SQL Trace-Ereignis und den zugehörigen Spalten entsprechen. | Zeigen Sie die Entsprechungen der Erweiterten Ereignisse zu SQL Trace-Ereignisklassen an |
| 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 halten, wie der Abfrageplan aussieht und wie der Transact-SQL-Stapel zum Zeitpunkt aussah, als die Sperre gesetzt wurde. | 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 |
Katalogansichten für Extended Events
Erweiterte Ereignisse bieten mehrere Katalogansichten. Katalogansichten geben Auskunft über die Metadaten oder Definition von Ereignissitzungen. Weitere Informationen zu aktiven Ereignissitzungen finden Sie unter Dynamische Verwaltungssichten für erweiterte Ereignisse.
| Name der Katalogansicht | Beschreibung |
|---|---|
| sys.database_event_session_actions | Gibt eine Zeile für jeden Vorgang bei jedem Ereignis einer datenbankbezogenen Ereignissitzung zurück. |
| sys.database_event_session_events | Gibt eine Zeile für jedes Ereignis in einer datenbankbezogenen Ereignissitzung zurück. |
| sys.database_event_session_fields | Gibt eine Zeile für jede anpassbare Spalte zurück, die explizit für Ereignisse und Ziele einer datenbankbezogenen Sitzung festgelegt wurde. |
| sys.database_event_session_targets | Gibt eine Zeile für jedes Zielereignis einer datenbankübergreifenden Ereignissitzung zurück. |
| sys.database_event_sessions | Gibt eine Zeile für jede datenbankbasierte Ereignissitzung zurück. |
Dynamische Verwaltungssichten für erweiterte Ereignisse
Erweiterte Ereignisse bietet verschiedene dynamische Verwaltungsansichten (DMVs). DMVs geben Informationen zu aktiven (gestarteten) Ereignissitzungen zurück, z. B. Sitzungs- und Zielstatistiken.
| Name des DMV | Beschreibung |
|---|---|
| sys.dm_xe_database_session_event_actions | Gibt Informationen zu Aktionen datenbankbezogener Ereignissitzungen zurück. |
| sys.dm_xe_database_session_events | Gibt Informationen zu Ereignissen datenbankbezogener Ereignissitzungen zurück. |
| sys.dm_xe_database_session_object_columns | Zeigt die Konfigurationswerte der an eine Sitzung im Gültigkeitsbereich der Datenbank gebundenen Objekte an. |
| sys.dm_xe_database_session_targets | Gibt Informationen zu Zielen datenbankbezogener Ereignissitzungen zurück. |
| sys.dm_xe_database_sessions | Gibt eine Zeile für jede datenbankbezogene Ereignissitzung zurück, die in der aktuellen Datenbank ausgeführt wird. |
Erlaubnisse
In Azure SQL-Datenbank, SQL-Datenbank in Fabric, azure SQL Managed Instance und in SQL Server 2022 und höheren Versionen unterstützt Extended Events ein granulares Berechtigungsmodell. Es können folgende Berechtigungen erteilt werden:
CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION
Informationen dazu, was jede dieser Berechtigungen steuert, finden Sie unter CREATE EVENT SESSION, ALTER EVENT SESSION, und DROP EVENT SESSION.
Alle diese Berechtigungen sind in der Berechtigung für die CONTROL Datenbank, die sql-verwaltete Instanz oder die SQL Server-Instanz enthalten. In Azure SQL-Datenbank verfügen der Datenbankbesitzer (dbo), Mitglieder der Datenbankrolle db_owner und die Administratoren des logischen Servers über die Datenbankberechtigung CONTROL. In Azure SQL Managed Instance und in SQL Server erhalten Mitglieder der sysadmin Serverrolle die Berechtigung CONTROL für die Instanz.
Codebeispiele können sich für Azure SQL-Datenbank, SQL-Datenbank in Fabric und sql Managed Instance unterscheiden.
Einige Transact-SQL Codebeispiele, die für SQL Server geschrieben wurden, benötigen kleine Änderungen für die Ausführung in Azure SQL-Datenbank oder SQL-Datenbank in Fabric. 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, SQL-Datenbank in Fabric und SQL Managed Instance
Azure SQL-Datenbank und SQL-Datenbank in Fabric unterstützen nur datenbankbezogene Ereignissitzungen. SQL Server Management Studio (SSMS) unterstützt datenbankweite Ereignissitzungen für Azure SQL-Datenbank: Ein Knoten mit Erweiterte Ereignisse, der datenbankweite Sitzungen enthält, 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 Ereignissitzungen werden für Azure SQL Managed Instance empfohlen.
Datenbankbezogene Ereignissitzungen werden im Objekt-Explorer in SSMS für Azure SQL Managed Instance nicht angezeigt. In einer von SQL verwalteten Instanz können datenbankbezogene Ereignissitzungen nur mit Transact-SQL abgefragt und verwaltet werden.
Zur Veranschaulichung werden in der folgenden Tabelle zwei Teilmengen der Katalogsichten aufgelistet und verglichen. 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, SQL-Datenbank in Fabric und Azure SQL Managed Instance |
|---|---|
sys.server_event_session_actionssys.server_event_session_eventssys.server_event_session_fieldssys.server_event_session_targetssys.server_event_sessions |
sys.database_event_session_actionssys.database_event_session_eventssys.database_event_session_fieldssys.database_event_session_targetssys.database_event_sessions |
Zugehöriger Inhalt
- Dynamische Verwaltungssichten für erweiterte Ereignisse
- Katalogsichten für erweiterte Ereignisse (Transact-SQL)
- SQL Mysteries: Causality tracking vs Event Sequence for XEvent Sessions
- Deadlocks in Azure SQL-Datenbank und Fabric SQL-Datenbank analysieren und verhindern
- Schnellstart: Erweiterte Ereignisse
- Erstellen Sie eine Ereignissitzung mit einem event_file-Ziel in Azure Storage
- Erweiterte Ereignisse in Azure SQL
- XELite: plattformübergreifende Bibliothek zum Lesen von XEvents aus XEL-Dateien oder SQL-Livestreams