Schnellstart: Erweiterte Ereignisse

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

Erweiterte Ereignisse sind ein einfaches Feature zur Leistungsüberwachung, mit dem Benutzer Daten sammeln können, um Probleme zu überwachen und zu beheben. Mithilfe von erweiterten Ereignissen können Sie Details zu internen Vorgängen des Datenbankmoduls anzeigen, die für Leistungsüberwachungs- und Problembehandlungszwecke relevant sind. Weitere Informationen zu erweiterten Ereignissen finden Sie in der Übersicht über erweiterte Ereignisse.

Dieser Artikel soll SQL-Administratoren, Technikern und Entwicklern helfen, die mit erweiterten Ereignissen noch nicht vertraut sind, und die mit der Verwendung beginnen und Ereignisdaten in nur wenigen Minuten anzeigen möchten.

Erweiterte Ereignisse werden auch als XEvents und manchmal nur XE bezeichnet.

Nach dem Lesen dieses Artikels haben Sie folgende Möglichkeiten:

  • Erfahren Sie, wie Sie eine Ereignissitzung in SQL Server Management Studio (SSMS) mit Beispielfotos erstellen.
  • Korrelieren von Screenshots mit entsprechenden Transact-SQL-Anweisungen
  • Grundlegendes zu den Begriffen und Konzepten hinter der SSMS-Benutzeroberfläche und XEvents T-SQL-Anweisungen
  • Erfahren Sie, wie Sie Ihre Ereignissitzung testen.
  • Grundlegendes zu Sitzungsergebnissen, einschließlich:
    • Verfügbare Optionen für die Ergebnisspeicherung
    • Verarbeitete und rohe Ergebnisse
    • Tools zum Anzeigen der Ergebnisse auf unterschiedliche Weise und auf unterschiedlichen Zeitskalen
  • Erfahren Sie, wie Sie nach allen verfügbaren Ereignissen suchen und ermitteln können.
  • Grundlegendes zu den Beziehungen zwischen erweiterten Ereignissystemansichten

Tipp

Weitere Informationen zu erweiterten Ereignissen in Azure SQL-Datenbank, einschließlich Codebeispielen, finden Sie unter "Erweiterte Ereignisse" in SQL-Datenbank.

Anfängliche Voraussetzungen

Um zu beginnen, müssen Sie:

  1. Herunterladen von SQL Server Management Studio (SSMS) Es wird empfohlen, eine aktuelle Version von SSMS mit den neuesten Verbesserungen und Fixes zu verwenden.
  2. Stellen Sie sicher, dass Ihr Konto über die ALTER ANY EVENT SESSIONServerberechtigung verfügt.

Details zu Sicherheit und Berechtigungen im Zusammenhang mit erweiterten Ereignissen finden Sie am Ende dieses Artikels im Anhang.

Erweiterte Ereignisse in SSMS

SSMS stellt eine voll funktionsfähige Benutzeroberfläche (UI) für erweiterte Ereignisse bereit. Viele Szenarien können mithilfe dieser Benutzeroberfläche durchgeführt werden, ohne T-SQL- oder dynamische Verwaltungsansichten (DYNAMIC Management Views, DMVs) verwenden zu müssen.

In diesem Abschnitt sehen Sie die UI-Schritte zum Erstellen einer Erweiterten Ereignissitzung und zum Anzeigen der Von ihr gemeldeten Daten. Nachdem Sie die Schritte in diesem Artikel durchgearbeitet oder überprüft haben, können Sie sich über die in den Schritten beteiligten Konzepte informieren, um ein tieferes Verständnis zu erhalten.

Erstellen einer Ereignissitzung in SSMS

Wenn Sie eine Sitzung mit erweiterten Ereignissen erstellen, teilen Sie dem System Folgendes mit:

  • An welchen Ereignissen Sie interessiert sind
  • So soll das System die Daten an Sie melden

In der Demonstration wird das Dialogfeld "Neue Sitzung " geöffnet, in dem gezeigt wird, wie die vier Seiten verwendet werden:

  • Allgemein
  • Ereignisse
  • Datenspeicherung
  • Erweitert

Der Text und unterstützende Screenshots können in Ihrer Version von SSMS geringfügig abweichen, sollten aber dennoch für die Erläuterung grundlegender Konzepte relevant sein.

  1. Verbinden zu einer Datenbankmodulinstanz. Erweiterte Ereignisse werden ab SQL Server 2014, in Azure SQL-Datenbank und Azure SQL verwaltete Instanz unterstützt.

  2. Wählen Sie in Objekt-Explorer "Erweiterte Ereignisse verwalten>" aus. In Azure SQL-Datenbank sind Ereignissitzungen datenbankbezogener Art, sodass die Option "Erweiterte Ereignisse" unter jeder Datenbank und nicht unter "Verwaltung" gefunden wird. Klicken Sie mit der rechten Maustaste auf den Ordner "Sitzungen", und wählen Sie "Neue Sitzung" aus. Das Dialogfeld "Neue Sitzung" ist dem Assistenten für neue Sitzungen vorzuziehen, obwohl die beiden ähnlich sind.

  3. Wählen Sie oben links die Seite "Allgemein " aus. Geben YourSessionSie dann im Textfeld "Sitzungsname" den Namen oder den gewünschten Namen ein. Wählen Sie noch nicht "OK" aus, da Sie noch einige Details auf anderen Seiten eingeben müssen.

    Screenshot of New Session > General > Session name.

  4. Wählen Sie oben links die Seite "Ereignisse " aus.

    Screenshot of New Session > Events > Select > Event library, Selected events.

  5. Wählen Sie im Bereich "Ereignisbibliothek" in der Dropdownliste nur Ereignisnamen aus.

    • Geben Sie sql_statement_ den Text in das Textfeld ein. Dadurch wird die Liste so gefiltert, dass nur Ereignisse mit sql_statement_ dem Namen angezeigt werden.
    • Scrollen Sie, und wählen Sie das Ereignis mit dem Namen aus sql_statement_completed.
    • Wählen Sie die Nach-rechts-Taste > aus, um das Ereignis in das Feld "Ausgewählte Ereignisse " zu verschieben.
  6. Wählen Sie auf der Seite "Ereignisse " die Schaltfläche "Konfigurieren " oben rechts aus. Dadurch wird das Feld "Ereigniskonfigurationsoptionen " für die ausgewählten Ereignisse geöffnet.

    Screenshot of New Session > Events > Configure > Filter (Predicate) > Field.

  7. Wählen Sie die Registerkarte "Filter" (Prädikat) aus. Wählen Sie als Nächstes "Hier auswählen " aus, um eine Klausel hinzuzufügen. Wir konfigurieren diesen Filter (auch als Prädikat bezeichnet), um alle SELECT Anweisungen mit einer HAVING Klausel zu erfassen.

  8. Wählen Sie in der Dropdownliste "Feld" die Option sqlserver.sql_textaus.

    • Wählen Sie für Operator die Option like_i_sql_unicode_string. i Im Namen des Operators bedeutet die Groß-/Kleinschreibung,-insensitiv.
    • Geben Sie %SELECT%HAVING%für Wert ein. Hier sind Prozentzeichen wild Karte, die für eine beliebige Zeichenfolge stehen.

    Hinweis

    Im zweiteiligen Namen des Felds ist sqlserver der Paketname und sql_text der Feldname. Das zuvor von Ihnen ausgewählte Ereignis, sql_statement_completed, muss sich im selben Paket wie das ausgewählte Feld befinden.

  9. Wählen Sie oben links die Seite "Datenspeicher " aus.

  10. Wählen Sie im Bereich "Ziele " die Option "Hier auswählen " aus, um ein Ziel hinzuzufügen.

    • Wählen Sie in der Dropdownliste "Typ " die Option event_fileaus. Dies bedeutet, dass die Ereignisdaten in einer Datei gespeichert werden, die wir später öffnen und anzeigen können. In Azure SQL-Datenbank und Azure SQL verwaltete Instanz werden Ereignisdaten in Azure Storage-Blobs gespeichert.

    Hinweis

    Ab SQL Server 2019 können Sie Azure Blob Storage in einem event_file Ziel in SQL Server verwenden.

    Screenshot of New Session > Data Storage > Targets > Type > event_file.

  11. Geben Sie im Eigenschaftenbereich den vollständigen Pfad und Dateinamen in den Dateinamen im Servertextfeld ein. Sie können auch die Schaltfläche "Durchsuchen " verwenden. Die Dateinamenerweiterung muss sein xel. In unserem Beispiel haben wir C:\Temp\YourSession_Target.xel

    Screenshot of New Session > Advanced > Maximum dispatch latency > OK.

  12. Wählen Sie oben links die Seite "Erweitert" aus. Verringern Sie die maximale Verteilerlatenz auf 3 Sekunden.

  13. Wählen Sie unten die Schaltfläche "OK " aus, um diese Ereignissitzung zu erstellen.

  14. Wieder in Objekt-Explorer öffnen oder aktualisieren Sie den Ordner "Sitzungen", und lesen Sie den neuen Knoten für YourSession. Die Sitzung wurde noch nicht gestartet. Sie beginnen es später.

    Screenshot of Node for your new *event session* named YourSession, in the Object Explorer, under Management > Extended Events > Sessions.

Bearbeiten einer Ereignissitzung in SSMS

Im SSMS-Objekt-Explorer können Sie Ihre Ereignissitzung bearbeiten, indem Sie mit der rechten Maustaste auf den Knoten klicken und dann "Eigenschaften" auswählen. Dasselbe mehrseitige Dialogfeld wird angezeigt.

Erstellen einer Ereignissitzung mit T-SQL

In der Benutzeroberfläche für erweiterte SSMS-Ereignisse können Sie ein T-SQL-Skript generieren, um Ihre Ereignissitzung wie folgt zu erstellen:

  • Klicken Sie mit der rechten Maustaste auf den Ereignissitzungsknoten, und wählen Sie dann Script Session as > CREATE to > Clipboard aus.
  • Fügen Sie die Auswahl in einen beliebigen Text-Editor ein.

Hier ist die generierte CREATE EVENT SESSION T-SQL-Anweisung für YourSession:

CREATE EVENT SESSION [YourSession]
    ON SERVER -- For SQL Server and Azure SQL Managed Instance
    -- ON DATABASE -- For Azure SQL Database
    ADD EVENT sqlserver.sql_statement_completed
    (
        ACTION(sqlserver.sql_text)
        WHERE
        ( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
        )
    )
    ADD TARGET package0.event_file
    (SET
        filename = N'C:\Temp\YourSession_Target.xel',
        max_file_size = (2),
        max_rollover_files = (2)
    )
    WITH (
        MAX_MEMORY = 2048 KB,
        EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS,
        MAX_DISPATCH_LATENCY = 3 SECONDS,
        MAX_EVENT_SIZE = 0 KB,
        MEMORY_PARTITION_MODE = NONE,
        TRACK_CAUSALITY = OFF,
        STARTUP_STATE = OFF
    );
GO

Bedingtes DROP der Ereignissitzung

Vor der CREATE EVENT SESSION Anweisung können Sie eine DROP EVENT SESSION Anweisung bedingt ausführen, falls eine Sitzung mit demselben Namen bereits vorhanden ist. Dadurch wird die vorhandene Sitzung gelöscht. Ohne diesen Vorgang verursacht der Versuch, eine Sitzung mit demselben Namen zu erstellen, einen Fehler.

IF EXISTS (SELECT *
      FROM sys.server_event_sessions
      WHERE name = 'YourSession')
BEGIN
    DROP EVENT SESSION YourSession
          ON SERVER;
END
GO

Starten und Beenden der Ereignissitzung mit T-SQL

Wenn Sie eine Ereignissitzung erstellen, wird sie gemäß der Standardeinstellung nicht automatisch gestartet. Sie können Ihre Ereignissitzung jederzeit starten oder beenden, indem Sie die folgende ALTER EVENT SESSION T-SQL-Anweisung verwenden.

ALTER EVENT SESSION [YourSession]
      ON SERVER
    STATE = START; -- STOP;

Sie haben die Möglichkeit, die Ereignissitzung so zu konfigurieren, dass sie automatisch gestartet wird, wenn die Datenbankmodulinstanz gestartet wird. Siehe Schlüsselwort (keyword) STARTUP STATE = ON in CREATE EVENT SESSION.

Die SSMS-Benutzeroberfläche bietet ein entsprechendes Kontrollkästchen, " Ereignissitzung beim Serverstart starten" auf der Seite "Neue Sitzung > allgemein ".

Testen einer Ereignissitzung

Testen Sie Ihre Ereignissitzung mit den folgenden Schritten:

  1. Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf ihren Ereignissitzungsknoten, und wählen Sie dann "Sitzung starten" aus.
  2. Führen Sie bei der Erstellung der Ereignissitzung die folgende SELECT...HAVING Anweisung aus, während Sie mit demselben Server (oder derselben Datenbank in Azure SQL-Datenbank) verbunden sind. Erwägen Sie, den Wert in der HAVING Klausel für jede Ausführung zu ändern und zwischen 2 und 3 zu wechseln. Dadurch können Sie die Unterschiede in den Ergebnissen erkennen.
  3. Klicken Sie mit der rechten Maustaste auf ihren Sitzungsknoten, und wählen Sie "Sitzung beenden" aus.
  4. Lesen Sie den nächsten Unterabschnitt zum Auswählen und Anzeigen der Ergebnisse.
SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o
            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) >= 3   --2     -- Try both values during session.
    ORDER BY
        c.name;

Für Vollständigkeit ist hier die Beispielausgabe aus dem vorherigen SELECT...HAVING.

/* Approximate output, 6 rows, all HAVING Count >= 3:
name                   Count-Per-Column-Repeated-Name
---------------------  ------------------------------
event_group_type       4
event_group_type_desc  4
event_session_address  5
event_session_id       5
is_trigger_event       4
trace_event_id         3
*/

Anzeigen von Ereignissitzungsdaten als XML

Führen Sie in einem Abfragefenster in SSMS die folgende SELECT Anweisung aus, um die von Ihrer Sitzung erfassten Ereignisdaten anzuzeigen. Jede Zeile stellt ein Ereigniselement dar. Der CAST(... AS xml) Datentyp der Spalte wird von "nvarchar " in "xml" geändert. Auf diese Weise können Sie den Spaltenwert auswählen, um ihn in einem neuen Fenster zu öffnen, um das Lesen zu erleichtern.

Hinweis

Das event_file Ziel fügt immer einen numerischen Teil in den xel Dateinamen ein. Bevor Sie die folgende Abfrage ausführen können, müssen Sie den tatsächlichen vollständigen Namen der xel Datei kopieren, die diesen numerischen Teil enthält, und sie in die SELECT Anweisung einfügen. Im folgenden Beispiel lautet _0_131085363367310000der numerische Teil .

SELECT
        object_name,
        file_name,
        file_offset,
        event_data,
        'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!'
                AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
        CAST(event_data AS xml) AS [event_data_XML]
                -- TODO: In the SSMS results grid, click this XML cell
    FROM
        sys.fn_xe_file_target_read_file(
            'C:\Temp\YourSession_Target_0_131085363367310000.xel',
            null, null, null
        );

Diese Abfrage bietet zwei Möglichkeiten, die vollständigen Ergebnisse einer bestimmten Ereigniszeile anzuzeigen:

  • Führen Sie die SELECT-Datei in SSMS aus, und wählen Sie dann eine Zelle in der event_data_XML Spalte aus.

  • Kopieren Sie die XML-Zeichenfolge aus einer Zelle in der event_data Spalte. Fügen Sie einen beliebigen Text-Editor wie Editor ein, und speichern Sie die Datei mit der Erweiterungxml. Öffnen Sie dann die Datei in einem Browser oder einem Editor, der XML-Daten anzeigen kann.

Ereignisdaten in XML

Als Nächstes wird ein Teil der Ergebnisse im XML-Format angezeigt. Die hier aufgeführte XML-Datei wird aus Platzgründen bearbeitet. <data name="row_count"> zeigt den Wert an, der 6mit unseren sechs zuvor angezeigten Ergebniszeilen übereinstimmt. Und wir können die ganze SELECT Aussage sehen.

<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
  <data name="duration">
    <value>111021</value>
  </data>
  <data name="cpu_time">
    <value>109000</value>
  </data>
  <data name="physical_reads">
    <value>0</value>
  </data>
  <data name="last_row_count">
    <value>6</value>
  </data>
  <data name="offset">
    <value>0</value>
  </data>
  <data name="offset_end">
    <value>584</value>
  </data>
  <data name="statement">
    <value>SELECT
        c.name,
        Count(*)  AS [Count-Per-Column-Repeated-Name]
    FROM
             sys.syscolumns  AS c
        JOIN sys.sysobjects  AS o

            ON o.id = c.id
    WHERE
        o.type = 'V'
        AND
        c.name like '%event%'
    GROUP BY
        c.name
    HAVING
        Count(*) &gt;= 3   --2     -- Try both values during session.
    ORDER BY
        c.name</value>
  </data>
</event>

Anzeigen von Ereignissitzungsdaten in SSMS

In der SSMS-Benutzeroberfläche gibt es mehrere erweiterte Features, mit denen Sie die Daten anzeigen können, die von einer Ereignissitzung erfasst werden. Weitere Informationen finden Sie unter Anzeigen von Ereignisdaten in SQL Server Management Studio.

Beginnen Sie mit den Kontextmenüoptionen mit der Bezeichnung "Zieldaten anzeigen" und "Livedaten überwachen".

Anzeigen von Zieldaten

Im SSMS-Objekt-Explorer können Sie mit der rechten Maustaste auf den Zielknoten klicken, der sich unter Ihrem Ereignissitzungsknoten befindet. Wählen Sie im Kontextmenü "Zieldaten anzeigen" aus. Die Daten werden von SSMS angezeigt.

Die Anzeige wird nicht aktualisiert, da neue Ereignisse in einer Sitzung auftreten. Sie können jedoch erneut "Zieldaten anzeigen" auswählen.

Screenshot of View Target Data, in SSMS, Management > Extended Events > Sessions > YourSession > package0.event_file, right-click.

Livedaten ansehen

Im Objekt-Explorervon SSMS können Sie mit der rechten Maustaste auf Ihren Sitzungsereignisknoten klicken. Wählen Sie im Kontextmenü "Livedaten ansehen" aus. Eingehende Daten werden beim Eintreffen von SSMS in Echtzeit angezeigt.

Screenshot of Watch Live Data, in SSMS, Management > Extended Events > Sessions > YourSession, right-click.

Begriffe und Konzepte in erweiterten Ereignissen

In der folgenden Tabelle sind die Begriffe aufgeführt, die für erweiterte Ereignisse verwendet werden, und ihre Bedeutungen werden beschrieben.

Begriff Beschreibung
event session Ein Konstrukt, das um mindestens ein Ereignis angeordnet ist, sowie unterstützende Elemente (wie Aktionen) stellen Ziele dar. Die CREATE EVENT SESSION Anweisung erstellt jede Ereignissitzung. Sie können ALTER eine Ereignissitzung starten und beenden.

Eine Ereignissitzung wird gelegentlich nur als Sitzungbezeichnet, wenn der Kontext verdeutlicht, dass es sich um eine Ereignissitzunghandelt.

Weitere Details zu Ereignissitzungen werden in: Erweiterte Ereignissitzungen beschrieben.
event Ein bestimmtes Vorkommen im System, das von einer aktiven Ereignissitzung überwacht wird.

Das Ereignis stellt z. B. den Moment dar, sql_statement_completed in dem eine angegebene T-SQL-Anweisung abgeschlossen ist. Das Ereignis kann seine Dauer und andere Daten melden.
target Ein Element, das die Ausgabedaten eines erfassten Ereignisses empfängt. Das Ziel zeigt Ihnen die Daten an.

Beispiele hierfür sind das event_file weiter oben in diesem Schnellstart verwendete Ziel und das ring_buffer Ziel, das die neuesten Ereignisse im Arbeitsspeicher speichert.

Jede Art von Ziel kann für jede Ereignissitzung verwendet werden. Ausführliche Informationen finden Sie unter "Ziele für erweiterte Ereignisse".
action Ein Feld, das dem Ereignis bekannt ist. Daten aus dem Feld werden an das Ziel gesendet. Das Aktionsfeld ist eng mit dem Prädikatfilterverknüpft.
predicateoder filtern Ein Test für die Daten in einem Ereignisfeld, der dazu verwendet wird, dass nur eine interessante Teilmenge der Ereignisvorkommen an das Ziel gesendet wird.

Ein Filter kann z. B. nur die sql_statement_completed Ereignisinstanzen enthalten, in denen die T-SQL-Anweisung die Zeichenfolge HAVINGenthielt.
package Ein Namensqualifizierer, der jedem Element in einem Satz von Elementen angefügt wird, die um einen Kern von Ereignissen herum angeordnet sind.

Ein Paket kann z. B. Ereignisse zu T-SQL-Text enthalten. Ein Ereignis könnte sich auf alle T-SQL-Daten in einem Batch auswirken. Unterdessen bezieht sich ein anderes begrenzteres Ereignis auf einzelne T-SQL-Anweisungen. Darüber hinaus gibt started es für jede T-SQL-Anweisung und completed Ereignisse.

Zudem befinden sich in dem Paket mit den Ereignissen auch für die Ereignisse geeignete Felder. Die meisten Ziele sind in package0 und werden mit Ereignissen aus vielen anderen Paketen verwendet.

Erweiterte Ereignisszenarien und Nutzungsdetails

Es gibt zahlreiche Szenarien für die Verwendung von erweiterten Ereignissen zur Überwachung und Problembehandlung des Datenbankmoduls und der Abfrageworkloads. Die folgenden Artikel enthalten Beispiele für sperrbezogene Szenarien:

So ermitteln Sie Ereignisse, die in Paketen verfügbar sind

Die folgende Abfrage gibt eine Zeile für jedes verfügbare Ereignis zurück, dessen Name die drei Zeichenzeichenfolge sqlenthält. Sie können die LIKE Klausel bearbeiten, um nach verschiedenen Ereignisnamen zu suchen. Das Resultset identifiziert auch das Paket, das das Ereignis enthält.

SELECT -- Find an event you want.
    p.name AS [Package-Name],
    o.object_type,
    o.name AS [Object-Name],
    o.description AS [Object-Descr],
    p.guid AS [Package-Guid]
FROM sys.dm_xe_packages AS p
INNER JOIN sys.dm_xe_objects AS o
    ON p.guid = o.package_guid
WHERE o.object_type = 'event' --'action'  --'target'
    AND p.name LIKE '%'
    AND o.name LIKE '%sql%'
ORDER BY p.name,
    o.object_type,
    o.name;

Das folgende Ergebnisbeispiel zeigt die zurückgegebene Zeile, die hier in das Format von column name = value. Die Daten stammen aus dem sql_statement_completed Ereignis, das in den vorherigen Beispielschritten verwendet wurde. Die Beschreibung des Objekts (ein Ereignis in diesem Beispiel) dient als Dokumentationszeichenfolge.

Package-Name = sqlserver
object_type  = event
Object-Name  = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491

Suchen von Ereignissen mithilfe der SSMS-Benutzeroberfläche

Eine weitere Option zum Suchen von Ereignissen anhand des Namens ist die Verwendung des Dialogfelds "Ereignisbibliothek für neue Sitzungsereignisse >>", das in einem vorherigen Screenshot gezeigt wird. Sie können einen Teilereignisnamen eingeben und alle übereinstimmenden Ereignisnamen suchen.

SQL Trace-Ereignisklassen

Eine Beschreibung der Verwendung erweiterter Ereignisse mit SQL Trace-Ereignisklassen und -Spalten finden Sie unter: Anzeigen der Erweiterten Ereignisäquivalente zu SQL-Ablaufverfolgungsereignisklassen.

Ereignisablaufverfolgung für Windows (ETW)

Beschreibungen zur Verwendung von erweiterter Ereignissen mit der Ereignisablaufverfolgung für Windows (ETW) finden Sie unter:

Systemereignissitzungen

In SQL Server und Azure SQL verwaltete Instanz werden standardmäßig mehrere Systemereignissitzungen erstellt und so konfiguriert, dass sie beim Starten des Datenbankmoduls gestartet werden. Wie bei den meisten Ereignissitzungen verbrauchen sie eine kleine Menge von Ressourcen und wirken sich nicht wesentlich auf die Arbeitsauslastungsleistung aus. Microsoft empfiehlt, diese Sitzungen erneut Standard zu aktivieren und auszuführen. Die Integritätssitzungen, insbesondere die system_health Sitzung, sind häufig nützlich für die Überwachung und Problembehandlung.

Sie können diese Ereignissitzungen im SSMS-Objekt-Explorer unter ">Erweiterte Ereignissitzungen > verwalten" anzeigen. In SQL Server beispielsweise sind diese Systemereignissitzungen:

  • AlwaysOn_health
  • system_health
  • telemetry_events

PowerShell-Anbieter

Sie können erweiterte Ereignisse mithilfe des SQL Server PowerShell-Anbieters verwalten. Weitere Informationen finden Sie unter Verwenden des PowerShell-Anbieters für erweiterte Ereignisse.

Systemansichten

Die Systemansichten für erweiterte Ereignisse umfassen:

  • Katalogansichten: Für Informationen zu Ereignissitzungen, die durch CREATE EVENT SESSIONdefiniert wurden.
  • Dynamische Verwaltungsansichten (DMVs): Informationen zu aktiven (gestarteten) Ereignissitzungen.

SELECTs und JOINs From System Views for Extended Events in SQL Server bietet Informationen zu:

  • So verbinden Sie die Ansichten
  • Mehrere nützliche Abfragen basierend auf diesen Ansichten
  • Die Korrelation zwischen:
    • Spalten anzeigen
    • CREATE EVENT SESSION -Klauseln
    • Die SSMS-Benutzeroberfläche

Anhang: Abfragen zum Suchen von Berechtigungsinhabern für erweiterte Ereignisse

In diesem Artikel erwähnte Berechtigungen:

  • ALTER ANY EVENT SESSION
  • VIEW SERVER STATE
  • CONTROL SERVER

Die folgende SELECT...UNION ALL Anweisung gibt Zeilen zurück, die anzeigen, wer über die erforderlichen Berechtigungen zum Erstellen von Ereignissitzungen und Abfragen der Systemkatalogansichten für erweiterte Ereignisse verfügt.

-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes the permissions
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT 'Owner-is-Principal' AS [Type-That-Owns-Permission],
    NULL AS [Role-Name],
    prin.name AS [Owner-Name],
    PERM.permission_name COLLATE Latin1_General_CI_AS_KS_WS AS [Permission-Name]
FROM sys.server_permissions AS PERM
INNER JOIN sys.server_principals AS prin
    ON prin.principal_id = PERM.grantee_principal_id
WHERE PERM.permission_name IN (
    'ALTER ANY EVENT SESSION',
    'VIEW SERVER STATE',
    'CONTROL SERVER'
)
UNION ALL
-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT 'Owner-is-Role',
    prin.name, -- [Role-Name]
    CAST((IsNull(pri2.name, N'No members')) AS NVARCHAR(128)),
    NULL
FROM sys.server_role_members AS rolm
RIGHT JOIN sys.server_principals AS prin
    ON prin.principal_id = rolm.role_principal_id
LEFT JOIN sys.server_principals AS pri2
    ON rolm.member_principal_id = pri2.principal_id
WHERE prin.name = 'sysadmin';

HAS_PERMS_BY_NAME-Funktion

Die folgende SELECT Anweisung meldet Ihre Berechtigungen. Sie beruht auf der integrierten Funktion HAS_PERMS_BY_NAME.

Wenn Sie außerdem die Berechtigung haben, vorübergehend andere Anmeldeinformationen zu imitieren , können Sie die Kommentare von EXECUTE AS LOGIN und REVERT Anweisungen aufheben, um festzustellen, ob andere Anmeldungen die ALTER ANY EVENT SESSION Berechtigung besitzen.

--EXECUTE AS LOGIN = 'LoginNameHere';
SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER ANY EVENT SESSION');
--REVERT;