Schnellstart: Erweiterte Ereignisse
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Bei erweiterten Ereignissen handelt es sich um ein ressourcenschonendes Feature zur Leistungsüberwachung, mit dem sich Daten erfassen lassen, um Probleme zu überwachen und zu behandeln. Mithilfe von erweiterten Ereignissen können Sie Details zu internen Vorgängen der Datenbank-Engine anzeigen, die für die Leistungsüberwachung und Problembehandlung relevant sind. Weitere Informationen zu erweiterten Ereignissen finden Sie unter Übersicht über erweiterte Ereignisse.
Dieser Artikel soll SQL-Administrator*innen, Techniker*innen und Entwickler*innen helfen, die mit erweiterten Ereignissen noch nicht vertraut sind und die in wenigen Minuten mit deren Nutzung und der Anzeige von Ereignisdaten beginnen möchten.
Erweiterte Ereignisse werden auch als XEvents und manchmal einfach als XE bezeichnet.
In diesem Artikel wird Folgendes vermittelt:
- Erfahren Sie, wie Sie eine Ereignissitzung in SQL Server Management Studio (SSMS) mit Beispielfotos erstellen.
- Korrelieren Sie Screenshots mit entsprechenden Transact-SQL-Anweisungen.
- Verstehen Sie ausführlich die Begriffe und Konzepte hinter der SSMS-Benutzeroberfläche und den XEvents T-SQL-Anweisungen.
- Erfahren Sie, wie Sie Ihre Ereignissitzung testen.
- Die Sitzungsergebnisse, darunter:
- Verfügbare Optionen für die Ergebnisspeicherung
- Verarbeitete Ergebnisse im Vergleich zu unverarbeiteten Ergebnissen
- Tools zum Anzeigen der Ergebnisse auf verschiedene Art und in 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 Azure SQL-Datenbank und Azure SQL Managed Instance.
Voraussetzungen
Zunächst müssen Sie folgende Aufgaben erledigen:
- Herunterladen von SQL Server Management Studio (SSMS) Es wird empfohlen, eine aktuelle Version von SSMS mit den neuesten Verbesserungen und Problembehebungen zu verwenden.
- Stellen Sie sicher, dass Ihr Konto
CREATE ANY EVENT SESSION
über (in SQL Server 2022 eingeführt) oderALTER ANY EVENT SESSION
über Serverberechtigungen verfügt. - Darüber hinaus erfordert die Anmeldung bei Verwendung von SSMS und zum Anzeigen von Sitzungen, die erstellt werden, die Berechtigung
VIEW SERVER PERFORMANCE STATE
.
Im Anhang am Ende dieses Artikels sind weitere, auf erweiterte Ereignisse bezogene Details zur Sicherheit und zu Berechtigungen verfügbar.
Erweiterte Ereignisse in SSMS
SSMS stellt eine voll funktionsfähige Benutzeroberfläche für erweiterte Ereignisse bereit. Viele Szenarien können mithilfe dieser Benutzeroberfläche durchgeführt werden, ohne T-SQL oder dynamische Verwaltungssichten (Dynamic Management Views, DMVs) verwenden zu müssen.
Im nächsten Abschnitt werden die Schritte in der Benutzeroberfläche veranschaulicht, mit deren Hilfe eine Sitzung für erweiterte Ereignisse erstellt und die gemeldeten Daten angezeigt werden. Nachdem Sie die Schritte selbst durchgearbeitet oder in diesem Artikel nachgelesen haben, können Sie sich über die Konzepte der einzelnen Schritte informieren, um ein tieferes Verständnis zu erlangen.
Erstellen einer Ereignissitzung in SMSS
Wenn Sie eine Sitzung für erweiterte Ereignisse erstellen, teilen Sie dem System Folgendes mit:
- Welche Ereignisse Sie interessieren.
- Auf welche Weise Ihnen das System die Daten melden soll.
In der Demonstration wird das Dialogfeld Neue Sitzung geöffnet und gezeigt, wie die vier wie folgt benannten Seiten zu verwenden sind:
- Allgemein
- Ereignisse
- Datenspeicherung
- Erweitert
Der Text und unterstützende Screenshots können von Ihrer SSMS-Version geringfügig abweichen, sollten aber für die Erläuterung grundlegender Konzepte dennoch relevant sein.
Stellen Sie eine Verbindung zu einer Instanz der Datenbank-Engine her. Erweiterte Ereignisse werden ab SQL Server 2014 (12.x) in Azure SQL-Datenbank und Azure SQL Managed Instance unterstützt.
Wählen Sie in Objekt-Explorer Verwaltung > Erweiterte Ereignisse aus. In Azure SQL-Datenbank sind Ereignissitzungen datenbankbezogen, sodass die Option Erweiterte Ereignisse nicht unter Verwaltung zu finden ist, sondern unter den einzelnen Datenbanken.
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.
Tipp
Drücken Sie in diesen Lernprogrammschritten erst OK , wenn Sie alle vier Seiten durchlaufen haben: Allgemein, Ereignisse, Datenspeicher und Erweitert.
Wählen Sie die Seite Allgemein aus. Geben Sie anschließend
YourSession
oder einen beliebigen Namen in das Textfeld Sitzungsname ein. Wählen Sie OK noch nicht aus, da Sie auf anderen Seiten noch weitere Details eingeben müssen.Wählen Sie die Seite Ereignisse aus.
Wählen Sie im Bereich Ereignisbibliothek in der Dropdownliste Nur Ereignisnamen aus.
- Geben Sie
sql_statement
in das Textfeld ein. Dadurch wird die Liste so gefiltert, dass nur Ereignisse mitsql_statement
im Namen angezeigt werden. - Scrollen Sie, und wählen Sie das Ereignis mit dem Namen
sql_statement_completed
aus. - Wählen Sie den Pfeil nach rechts
>
aus, um das Ereignis in das Feld Ausgewählte Ereignisse zu verschieben.
- Geben Sie
Wählen Sie auf der Seite Ereignisse die Schaltfläche Konfigurieren aus. Dadurch wird das Feld Optionen für die Ereigniskonfiguration für die ausgewählten Ereignisse geöffnet.
Wählen Sie die Registerkarte "Filter" (Prädikat) aus. Wählen Sie als Nächstes die neue Filterzeile aus, die besagt , dass Sie hier klicken, um eine Klausel hinzuzufügen. In diesem Lernprogramm wird dieser Filter (auch als Prädikat bezeichnet) so konfiguriert, dass alle
SELECT
Anweisungen mit einerHAVING
Klausel erfasst werden.Wählen Sie in der Dropdownliste Feld den Eintrag
sqlserver.sql_text
aus.- Wählen Sie für Operator die Option
like_i_sql_unicode_string
aus.i
im Namen des Operators bedeutet hier, dass die Groß-/Kleinschreibung nicht beachtet wird. - Geben Sie
%SELECT%HAVING%
als Wert ein. Hier sind Prozentzeichen (%
) Wildcards, die für eine beliebige Zeichenfolge stehen.
Hinweis
Im zweiteiligen Namen des Felds stellt sqlserver den Paketnamen und sql_text den Feldnamen dar. Das zuvor von Ihnen ausgewählte Ereignis, sql_statement_completed, muss sich im selben Paket wie das ausgewählte Feld befinden.
- Wählen Sie für Operator die Option
Wählen Sie die Seite Datenspeicherung aus.
Wählen Sie im Bereich "Ziele" die neue Zeile "Zieltyp" aus, die besagt, dass Sie hier klicken, um ein Ziel hinzuzufügen. In diesem Lernprogramm schreiben wir unsere erfassten erweiterten Ereignisdaten in eine Ereignisdatei. Das bedeutet, dass die Ereignisdaten in einer Datei gespeichert werden, die wir später öffnen und anzeigen können. Ab SQL Server 2019 (15.x) können Auch Ereignisdaten geschrieben werden, die in Azure Storage gespeichert werden, der Standard in Azure SQL.
- Wählen Sie in der Dropdownliste Typ den Eintrag
event_file
.
- Wählen Sie in der Dropdownliste Typ den Eintrag
Geben Sie im Bereich Eigenschaften den vollständigen Pfad und Namen in das Textfeld Dateiname auf Server ein. Sie können dazu auch die Schaltfläche Durchsuchen verwenden. Das Suffix muss
xel
lauten. In unserem Beispiel haben wir verwendetC:\temp\YourSession_Target.xel
.Wählen Sie die Seite Erweitert aus. Standardmäßig sollte dieses .xel-Ziel der erweiterten Ereignissitzung minimale oder keine Auswirkungen auf die Serverleistung haben, aber diese Einstellungen auf der Seite "Erweitert " können verwendet werden, um die Ressourcen und Latenz zu erhöhen oder zu verringern.
Wählen Sie unten die Schaltfläche OK aus, um diese Ereignissitzung zu erstellen.
Wieder im SSMS-Objekt-Explorer öffnen oder aktualisieren Sie den Ordner "Sitzungen", und sehen Sie sich den neuen Knoten für die
YourSession
Sitzung für erweiterte Ereignisse an. Die Sitzung wurde noch nicht gestartet. In diesem Lernprogramm beginnen wir es später.
Bearbeiten einer Ereignissitzung in SMSS
Im Objekt-Explorer von SSMS können Sie die Ereignissitzung bearbeiten, indem Sie mit der rechten Maustaste auf den entsprechenden Knoten klicken und anschließend Eigenschaften auswählen. Dasselbe mehrseitige Dialogfeld wird angezeigt.
Erstellen einer Ereignissitzung mit T-SQL
In SSMS können Sie ein T-SQL-Skript generieren, um Ihre Ereignissitzung wie folgt zu erstellen:
- Klicken Sie mit der rechten Maustaste auf den Knoten der Ereignissitzung, und wählen Sie anschließend Sitzung ausarbeiten als > Erstellen (CREATE) in > Zwischenablage aus.
- Fügen Sie die Auswahl in einen beliebigen Text-Editor ein.
Nachfolgend ist die generierte T-SQL-Anweisung CREATE EVENT SESSION
für YourSession
aufgeführt:
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');
GO
Hinweis
Verwenden Sie ON DATABASE
in Azure SQL-Datenbank anstelle von ON SERVER
.
Bedingtes Löschen (DROP) der Ereignissitzung
Vor der Anweisung CREATE EVENT SESSION
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 diese Anweisung 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. Die Ereignissitzung können Sie jederzeit mithilfe der folgenden T-SQL-Anweisung ALTER EVENT SESSION
starten oder beenden.
ALTER EVENT SESSION [YourSession]
ON SERVER
STATE = START; -- STOP;
Sie können die Ereignissitzung so konfigurieren, dass sie beim Start der Instanz der Datenbank-Engine automatisch startet. Siehe das Schlüsselwort STARTUP STATE = ON
in CREATE EVENT SESSION
.
Die Benutzeroberfläche von SSMS bietet ein entsprechendes Kontrollkästchen namens Ereignissitzung beim Serverstart starten auf der Seite Neue Sitzung > Allgemein.
Testen einer Ereignissitzung
Die Ereignissitzung können Sie mithilfe der folgenden Schritte testen:
- Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf den Knoten der Ereignissitzung, und wählen Sie dann Sitzung starten aus.
- Führen Sie die folgende
SELECT...HAVING
-Anweisung ein paar Mal aus, während Sie mit demselben Server (oder derselben Datenbank in Azure SQL-Datenbank) verbunden sind, auf dem Sie bzw. in der Sie die Ereignissitzung erstellt haben. Erwägen Sie, den Wert in derHAVING
-Klausel für jede Ausführung zu ändern und dabei zwischen 2 und 3 zu wechseln. Dadurch können Sie die Unterschiede in den Ergebnissen erkennen. - Klicken Sie mit der rechten Maustaste auf den Sitzungsknoten, und wählen Sie dann Sitzung beenden aus.
- 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
INNER 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;
Zur Vollständigkeit ist hier die Beispielausgabe aus der vorherigen SELECT...HAVING
-Anweisung aufgeführt.
/* 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 der Sitzung erfassten Ereignisdaten anzuzeigen. Jede Zeile stellt ein Ereignis dar. Durch die CAST(... AS xml)
-Anweisung wird der Datentyp der Spalte von nvarchar in xml geändert. So können Sie den Spaltenwert auswählen, um ihn zur leichteren Lesbarkeit in einem neuen Fenster zu öffnen.
Hinweis
Beim event_file
-Ziel wird immer ein numerischer Teil in den xel
-Dateinamen eingefügt. Bevor Sie die folgende Abfrage ausführen können, müssen Sie den vollständigen Namen der xel
-Datei einschließlich des numerischen Teils kopieren und in die SELECT
-Anweisung einfügen. Im folgenden Beispiel lautet der numerische Teil _0_131085363367310000
.
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 Ereigniszeile anzuzeigen:
Führen Sie die SELECT-Anweisung in SSMS aus, und wählen Sie dann in der Spalte
event_data_XML
eine Zelle aus.Kopieren Sie die XML-Zeichenfolge aus einer Zelle in die Spalte
event_data
. Fügen Sie sie in einen einfachen Text-Editor wie den Windows-Editor ein, und speichern Sie die Datei mit der Erweiterungxml
. Öffnen Sie die Datei dann 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. Der folgende XML-Code ist aus Platzgründen bearbeitet. <data name="row_count">
zeigt den Wert 6
, was den zuvor angezeigten sechs Ergebniszeilen entspricht. Außerdem ist die vollständige SELECT
-Anweisung zu 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
INNER 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;</value>
</data>
</event>
Anzeigen von Ereignissitzungsdaten in SSMS
Die Benutzeroberfläche von SSMS verfügt über zahlreiche 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.
Ausgangspunkt sind die Optionen Zieldaten anzeigen und Livedaten anzeigen im Kontextmenü.
Anzeigen von Zieldaten
Im SSMS-Objekt-Explorer können Sie mit der rechten Maustaste auf den Zielknoten klicken, der sich unter Ihrem Ereignissitzungsknoten befindet, z. B. package0.event_counter. 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.
Anzeigen von Livedaten
Im Objekt-Explorer von SSMS können Sie mit der rechten Maustaste auf Ihren Sitzungsereignisknoten klicken. Wählen Sie im Kontextmenü Livedaten anzeigen aus. Eingehende Daten werden beim Eintreffen von SSMS in Echtzeit angezeigt.
Begriffe und Konzepte für erweiterte Ereignisse
In der folgenden Tabelle sind die für erweiterte Ereignisse verwendeten Begriffe aufgeführt. Zudem wird ihre jeweilige Bedeutung beschrieben.
Begriff | Beschreibung |
---|---|
event session |
Ein Konstrukt, das um mindestens ein Ereignis angeordnet ist, sowie unterstützende Elemente (wie Aktionen) stellen Ziele dar. Mit der Anweisung CREATE EVENT SESSION wird jeweils eine Ereignissitzung erstellt. Mithilfe der ALTER -Anweisung können Sie eine Ereignissitzung nach Bedarf starten und beenden.Eine Ereignissitzung wird gelegentlich nur als Sitzungbezeichnet, wenn der Kontext verdeutlicht, dass es sich um eine Ereignissitzunghandelt. Weitere Details zu Ereignissitzungen finden Sie unter Sitzungen für erweiterte Ereignisse. |
event |
Ein bestimmtes Vorkommen im System, das von einer aktiven Ereignissitzung überwacht wird. Das Ereignis sql_statement_completed stellt z. B. den Zeitpunkt dar, zu dem eine gegebene T-SQL-Anweisung abgeschlossen wird. 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 weiter oben in diesem Schnellstart verwendete event_file -Ziel und das ring_buffer -Ziel, das die neuesten Ereignisse im Arbeitsspeicher speichert.Für jede Ereignissitzung können alle Arten von Zielen verwendet werden. Details 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. |
predicate oder Filter |
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 beispielsweise nur die sql_statement_completed -Ereignisse enthalten, bei denen die T-SQL-Anweisung die Zeichenfolge HAVING enthält. |
package |
Ein Namensqualifizierer, der jedem Element in einem Satz von Elementen angefügt wird, die um einen Kern von Ereignissen herum angeordnet sind. Beispielsweise kann ein Paket Ereignisse zum T-SQL-Text enthalten. Ein Ereignis könnte sich auf alle T-SQL-Anweisungen in einem Batch beziehen. Unterdessen bezieht sich ein anderes begrenzteres Ereignis auf einzelne T-SQL-Anweisungen. Darüber hinaus gibt es für jede T-SQL-Anweisung started - und completed -Ereignisse.Zudem befinden sich in dem Paket mit den Ereignissen auch für die Ereignisse geeignete Felder. Die meisten Ziele befinden sich in package0 und werden mit Ereignissen aus vielen anderen Paketen verwendet. |
Szenarien für erweiterte Ereignisse und Nutzungsdetails
Es gibt zahlreiche Szenarien für die Nutzung erweiterter Ereignisse zur Überwachung und Problembehandlung der Datenbank-Engine und der Abfrage-Workloads. Die folgenden Artikel enthalten Beispiele mit sperrbezogenen Szenarien:
- Suchen der Objekte, die über die meisten Sperren verfügen
- In diesem Szenario wird das Histogramm-Ziel verwendet. Dieses verarbeitet die Rohereignisdaten, bevor sie in zusammengefasster (auf Buckets verteilter) Form angezeigt werden.
- Feststellen, welche Abfragen Sperren enthalten
- In diesem Szenario wird das pair_matching-Ziel verwendet, wobei die beiden Ereignisse
sqlserver.lock_acquire
undsqlserver.lock_release
sind.
- In diesem Szenario wird das pair_matching-Ziel verwendet, wobei die beiden Ereignisse
Ermitteln der in Paketen verfügbaren Ereignisse
Die folgende Anweisung gibt eine Zeile für alle verfügbaren Ereignisse zurück, deren Name die drei Zeichen umfassende Zeichenfolge sql
enthält. Sie können die LIKE
-Klausel bearbeiten, um nach anderen Ereignisnamen zu suchen. Im Resultset wird auch das Paket angegeben, 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
umgewandelt wurde. Die Daten stammen aus dem sql_statement_completed
-Ereignis, das in den vorherigen Beispielschritten verwendet wurde. Die Beschreibung des Objekts (in diesem Beispiel ein Ereignis) 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 über die Benutzeroberfläche von SSMS
Eine weitere Option für die Suche nach Ereignissen anhand des Namens bietet das Dialogfeld Neue Sitzung > Ereignisse >Ereignisbibliothek, das in einem vorhergehenden Screenshot gezeigt wurde. Sie können den Teil eines Ereignisnamens eingeben und damit nach allen übereinstimmenden Ereignisnamen suchen.
Ereignisklassen der SQL-Ablaufverfolgung
Eine Beschreibung der Nutzung erweiterter Ereignisse mit Ereignisklassen und -spalten der SQL-Ablaufverfolgung finden Sie unter: Anzeigen der Entsprechungen von erweiterten Ereignissen für SQL-Ablaufverfolgungsklassen.
Ereignisablaufverfolgung für Windows (Event Tracing for Windows, ETW)
Beschreibungen zur Nutzung erweiterter Ereignisse mit der Ereignisablaufverfolgung für Windows (ETW) finden Sie unter:
- Ereignisablaufverfolgung für Windows-Ziel
- Überwachen der Systemaktivität mit erweiterten Ereignissen
Systemereignissitzungen
In SQL Server und Azure SQL Managed Instance werden standardmäßig mehrere Systemereignissitzungen erstellt und so konfiguriert, dass sie beim Start der Datenbank-Engine gestartet werden. Wie bei den meisten Ereignissitzungen verbrauchen sie eine geringe Menge von Ressourcen und wirken sich nicht wesentlich auf die Workload-Leistung aus. Microsoft empfiehlt, diese Sitzungen aktiviert zu lassen und sie weiter auszuführen. Die Integritätssitzungen, insbesondere die system_health-Sitzung, sind häufig nützlich für die Überwachung und Problembehandlung.
Diese Ereignissitzungen können Sie im Objekt-Explorer von SSMS unter Verwaltung > Erweiterte Ereignisse >Sitzungen anzeigen. In SQL Server sind diese Systemereignissitzungen zum Beispiel:
AlwaysOn_health
system_health
telemetry_events
PowerShell-Anbieter
Erweiterte Ereignisse lassen sich mithilfe des Anbieters von SQL Server PowerShell verwalten. Weitere Informationen finden Sie unter Verwenden des PowerShell-Anbieters für erweiterte Ereignisse.
Systemansichten
Die Systemansichten für erweiterte Ereignisse umfassen:
- Katalogsichten: für Informationen zu Ereignissitzungen, die durch
CREATE EVENT SESSION
definiert sind. - Dynamische Verwaltungssichten (DMVs): für Informationen zu aktiven (gestarteten) Ereignissitzungen.
SELECT- und JOIN-Anweisungen aus Systemsichten für erweiterte Ereignisse in SQL Server – stellt Informationen zu Folgendem bereit:
- Vorgehensweise zum Verbinden der Ansichten
- Mehrere nützliche Abfragen basierend auf diesen Ansichten
- Korrelation zwischen:
- Spalten anzeigen
CREATE EVENT SESSION
-Klauseln- Benutzeroberfläche von SSMS
Anhang: Abfragen für die Suche nach Inhabern von Berechtigungen 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 angeben, wer über die erforderlichen Berechtigungen zum Erstellen von Ereignissitzungen und zum Abfragen der Systemkatalogsichten für erweiterte Ereignisse verfügt.
-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes all lower permissions like
-- '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 (
'CREATE ANY EVENT SESSION',
'ALTER ANY EVENT SESSION',
'VIEW SERVER PERFORMANCE STATE',
'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 gibt die Berechtigungen aus. 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 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;