Erweiterte Ereignissitzungen

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

Eine erweiterte Ereignissitzung wird im SQL Server-Datenbank-Engine Prozess erstellt, in dem das Modul "Erweiterte Ereignisse" gehostet wird. Die folgenden Aspekte einer Erweiterten Ereignissitzung bieten einen Kontext für das Verständnis der Infrastruktur für erweiterte Ereignisse und der Verarbeitung, die stattfindet:

  • Sitzungsstatus. Die verschiedenen Zustände, in denen sich eine Erweiterte Ereignissitzung befindet, wenn CREATE EVENT SESSION und ALTER EVENT SESSION Anweisungen ausgeführt werden.

  • Sitzungsinhalt und -eigenschaften. Der Inhalt einer Erweiterten Ereignissitzung, z. B. Ziele und Ereignisse, und wie diese Objekte in einer Sitzung oder zwischen Sitzungen verknüpft sind.

Sitzungszustände

Im Folgenden werden die verschiedenen Status einer Sitzung für erweiterte Ereignisse veranschaulicht.

Diagram showing Extended Events session state.

Beachten Sie, dass sich der Sitzungszustand in Bezug auf die vorstehende Abbildung ändert, während die verschiedenen DDL-Befehle (Data Definition Language) für eine Ereignissitzung ausgegeben werden. Eine Beschreibung dieser Statusänderungen finden Sie in der folgenden Tabelle.

Bezeichnung in der Abbildung DDL-Anweisung Beschreibung
Erstellen CREATE EVENT SESSION Der Hostprozess erstellt ein Sitzungsobjekt, das die von CREATE EVENT SESSIONihnen bereitgestellten Metadaten enthält. Der Hostprozess überprüft die Sitzungsdefinition, überprüft die Benutzerberechtigungsstufe und speichert die Metadaten in der master Datenbank. An diesem Punkt ist die Sitzung nicht aktiv.
Alter ALTER EVENT SESSION, STATE=START Der Hostprozess startet die Sitzung. Der Hostprozess liest die gespeicherten Metadaten, überprüft die Sitzungsdefinition und die Benutzerberechtigungsebene und erstellt die Sitzung. Sitzungsobjekte wie Ereignisse und Ziele werden geladen, und die Ereignisbehandlung ist aktiv.
Alter ALTER EVENT SESSION, STATE=STOP Der Hostprozess beendet die aktive Sitzung, behält jedoch die Metadaten.
Drop DROP EVENT SESSION Je nachdem, ob die Sitzung aktiv ist, löscht Drop (DROP SESSION) die Metadaten und schließt die aktive Sitzung oder löscht die Sitzungsmetadaten.

Sitzungsinhalte und -merkmale

Erweiterte Ereignissitzungen weisen konkludente Grenzen auf, da die Konfiguration einer Sitzung die Konfiguration einer anderen Sitzung nicht ändert. Diese Grenzen verhindern jedoch nicht, dass ein Ereignis oder ein Zieltyp in mehr als einer Sitzung verwendet wird.

In der folgenden Abbildung werden der Sitzungsinhalt und die Beziehung zwischen Paketen und Sitzungen veranschaulicht.

Diagram showing object coexistence and sharing in sessions.

Beachten Sie in Bezug auf die vorherige Abbildung Folgendes:

  • Die Zuordnung zwischen Paketobjekten und Sitzungen ist viele zu viele, was bedeutet, dass ein Objekt eines bestimmten Typs in mehreren Sitzungen angezeigt werden kann und eine Sitzung mehrere Objekte enthalten kann.
  • Dasselbe Ereignis (Ereignis 1) oder Zieltyp (Ziel 1) kann in mehreren Sitzungen verwendet werden.

Sitzungen besitzen die folgenden Eigenschaften:

  • Aktionen und Prädikate sind für eine Sitzung an Ereignisse gebunden. Wenn Sie Ereignis 1 in Sitzung A mit Aktion 1 und Prädikat Z haben, wirkt sich dies nicht auf ereignis 1 in Sitzung B mit Aktion 2 und Aktion 3 ohne Prädikat aus.
  • Richtlinien werden an Sitzungen zum Zweck der Behandlung von Pufferung und Verteilung sowie zur Kausalitätsverfolgung angefügt.

Die Pufferung bezieht sich darauf, wie Ereignisdaten gespeichert werden, während eine Ereignissitzung ausgeführt wird. In Richtlinien für die Pufferung wird neben dem Arbeitsspeicher für Ereignisdaten die Verlustrichtlinie für die Ereignisse angegeben. Dispatch bezieht sich auf die Dauer von Zeitereignissen, die in Puffern verbleiben, bevor sie für die Verarbeitung an Ziele bereitgestellt werden.

Die Kausalitätsnachverfolgung verfolgt die Arbeit über mehrere Aufgaben hinweg. Wenn die Kausalitätsverfolgung aktiviert ist, verfügt jedes ausgelöste Ereignis systemweit über eine eindeutige Aktivitäts-ID. Die Aktivitäts-ID setzt sich aus einem GUID-Wert, der für alle Ereignisse in Bezug auf einen Task konstant bleibt, und einer Sequenznummer zusammen, die bei jeder Ereignisauslösung erhöht wird. Wenn ein Task das Ausführen eines anderen Tasks verursacht, wird die Aktivitäts-ID des übergeordneten Tasks an den untergeordneten Task gesendet. Der untergeordnete Task gibt beim ersten Auslösen eines Ereignisses die Aktivitäts-ID des übergeordneten Tasks aus.