Ereignisse
31. März, 23 Uhr - 2. Apr., 23 Uhr
Das größte SQL-, Fabric- und Power BI-Lernereignis. 31. März – 2. April. Verwenden Sie Code FABINSIDER, um $400 zu sparen.
Heute registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
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:
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.
Zunächst müssen Sie folgende Aufgaben erledigen:
CREATE ANY EVENT SESSION
über (in SQL Server 2022 eingeführt) oder ALTER ANY EVENT SESSION
über Serverberechtigungen verfügt.VIEW SERVER PERFORMANCE STATE
.Im Anhang am Ende dieses Artikels sind weitere, auf erweiterte Ereignisse bezogene Details zur Sicherheit und zu Berechtigungen verfügbar.
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.
Wenn Sie eine Sitzung für erweiterte Ereignisse erstellen, teilen Sie dem System Folgendes mit:
In der Demonstration wird das Dialogfeld Neue Sitzung geöffnet und gezeigt, wie die vier wie folgt benannten Seiten zu verwenden sind:
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.
sql_statement
in das Textfeld ein. Dadurch wird die Liste so gefiltert, dass nur Ereignisse mit sql_statement
im Namen angezeigt werden.sql_statement_completed
aus.>
aus, um das Ereignis in das Feld Ausgewählte Ereignisse zu verschieben.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 einer HAVING
Klausel erfasst werden.
Wählen Sie in der Dropdownliste Feld den Eintrag sqlserver.sql_text
aus.
like_i_sql_unicode_string
aus. i
im Namen des Operators bedeutet hier, dass die Groß-/Kleinschreibung nicht beachtet wird.%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 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.
event_file
.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 verwendet C:\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.
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.
In SSMS können Sie ein T-SQL-Skript generieren, um Ihre Ereignissitzung wie folgt zu erstellen:
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
.
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
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.
Die Ereignissitzung können Sie mithilfe der folgenden Schritte testen:
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 der HAVING
-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.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
*/
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 Erweiterung xml
. Öffnen Sie die Datei dann in einem Browser oder einem Editor, der XML-Daten anzeigen kann.
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>
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ü.
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.
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.
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. |
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:
sqlserver.lock_acquire
und sqlserver.lock_release
sind.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
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.
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.
Beschreibungen zur Nutzung erweiterter Ereignisse mit der Ereignisablaufverfolgung für Windows (ETW) finden Sie unter:
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
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.
Die Systemansichten für erweiterte Ereignisse umfassen:
CREATE EVENT SESSION
definiert sind.SELECT- und JOIN-Anweisungen aus Systemsichten für erweiterte Ereignisse in SQL Server – stellt Informationen zu Folgendem bereit:
CREATE EVENT SESSION
-KlauselnIn 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';
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;
Ereignisse
31. März, 23 Uhr - 2. Apr., 23 Uhr
Das größte SQL-, Fabric- und Power BI-Lernereignis. 31. März – 2. April. Verwenden Sie Code FABINSIDER, um $400 zu sparen.
Heute registrieren