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:
- Herunterladen von SQL Server Management Studio (SSMS) Es wird empfohlen, eine aktuelle Version von SSMS mit den neuesten Verbesserungen und Fixes zu verwenden.
- Stellen Sie sicher, dass Ihr Konto über die
ALTER ANY EVENT SESSION
Serverberechtigung 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.
Verbinden zu einer Datenbankmodulinstanz. Erweiterte Ereignisse werden ab SQL Server 2014, in Azure SQL-Datenbank und Azure SQL verwaltete Instanz unterstützt.
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.
Wählen Sie oben links die Seite "Allgemein " aus. Geben
YourSession
Sie 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.Wählen Sie oben links die Seite "Ereignisse " aus.
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 mitsql_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.
- Geben Sie
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.
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 einerHAVING
Klausel zu erfassen.Wählen Sie in der Dropdownliste "Feld" die Option
sqlserver.sql_text
aus.- 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.
- Wählen Sie für Operator die Option
Wählen Sie oben links die Seite "Datenspeicher " aus.
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_file
aus. 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.- Wählen Sie in der Dropdownliste "Typ " die Option
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 wirC:\Temp\YourSession_Target.xel
Wählen Sie oben links die Seite "Erweitert" aus. Verringern Sie die maximale Verteilerlatenz auf 3 Sekunden.
Wählen Sie unten die Schaltfläche "OK " aus, um diese Ereignissitzung zu erstellen.
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.
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:
- Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf ihren Ereignissitzungsknoten, und wählen Sie dann "Sitzung starten" aus.
- 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 derHAVING
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. - Klicken Sie mit der rechten Maustaste auf ihren Sitzungsknoten, und wählen Sie "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
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_131085363367310000
der 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 6
mit 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(*) >= 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.
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.
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. |
predicate oder 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 HAVING enthielt. |
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:
- Suchen der Objekte, die über die meisten Sperren verfügen
- In diesem Szenario wird das Histogrammziel verwendet, das die Rohereignisdaten verarbeitet, bevor sie ihnen in einem zusammengefassten (zusammengefassten) Formular angezeigt wird.
- Feststellen, welche Abfragen Sperren enthalten
- In diesem Szenario wird das pair_matching-Ziel verwendet, wobei das Ereignispaar und
sqlserver.lock_acquire
sqlserver.lock_release
.
- In diesem Szenario wird das pair_matching-Ziel verwendet, wobei das Ereignispaar und
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 sql
enthä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:
- Ereignisablaufverfolgung für Windows-Ziel
- Überwachen der Systemaktivität mit erweiterten Ereignissen
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 SESSION
definiert 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;
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für