sys.dm_exec_sessions (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW) SQL Analytics Platform-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse
Gibt eine Zeile pro authentifizierter Sitzung in SQL Server zurück. sys.dm_exec_sessions
ist eine Sicht des Serverbereichs mit Informationen zu allen aktiven Benutzerverbindungen und internen Aufgaben. Zu diesen Informationen zählen u. a. die Clientversion, der Name des Clientprogramms, die Clientanmeldezeit, der angemeldete Benutzer und die aktuelle Sitzungseinstellung. Mit sys.dm_exec_sessions
zeigen Sie zuerst die aktuelle Systemauslastung an und identifizieren eine interessante Sitzung. Anschließend informieren Sie sich über diese Sitzung anhand anderer dynamischer Verwaltungssichten oder dynamischer Verwaltungsfunktionen.
Die dynamischen Verwaltungssichten sys.dm_exec_connections
, sys.dm_exec_sessions
und sys.dm_exec_requests
sind der veralteten Systemkompatibilitätssicht sys.sysprocesses zugeordnet.
Hinweis
Informationen zum Aufrufen aus dem dedizierten SQL-Pool in Azure Synapse Analytics oder Analytics Platform System (PDW) finden Sie unter sys.dm_pdw_nodes_exec_sessions. Verwenden Sie sys.dm_exec_sessions
für serverlose SQL-Pools oder Microsoft Fabric.
Spaltenname | Datentyp | Beschreibung und versionsspezifische Informationen |
---|---|---|
session_id | smallint | Identifiziert die einer aktiven primären Verbindung zugeordnete Sitzung. Lässt keine NULL-Werte zu. |
login_time | datetime | Uhrzeit, zu der die Sitzung eingerichtet wurde. Lässt keine NULL-Werte zu. Sitzungen, die die Anmeldung zum Zeitpunkt der Abfrage dieser DMV noch nicht abgeschlossen haben, werden mit der Anmeldezeit 1900-01-01 angezeigt. |
host_name | nvarchar(128) | Name der für eine Sitzung spezifischen Clientarbeitsstation. Der Wert ist für interne Sitzungen NULL. Lässt NULL-Werte zu. Sicherheitshinweis: Die Clientanwendung stellt den Namen der Arbeitsstation bereit und kann fehlerhafte Daten angeben. Verlassen Sie sich nicht auf HOST_NAME als Sicherheitsfeature. |
program_name | nvarchar(128) | Name des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist für interne Sitzungen NULL. Lässt NULL-Werte zu. |
host_process_id | int | Prozess-ID des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist für interne Sitzungen NULL. Lässt NULL-Werte zu. |
client_version | int | Die vom Client für die Verbindung mit dem Server verwendete TDS-Protokollversion der Schnittstelle. Der Wert ist für interne Sitzungen NULL. Lässt NULL-Werte zu. |
client_interface_name | nvarchar(32) | Name der Bibliothek/des Treibers, die bzw. der vom Client für die Kommunikation mit dem Server verwendet wird. Der Wert ist für interne Sitzungen NULL. Lässt NULL-Werte zu. |
security_id | varbinary(85) | Microsoft Windows-Sicherheits-ID, die der Anmeldung zugeordnet ist. Lässt keine NULL-Werte zu. |
login_name | nvarchar(128) | SQL Server-Anmeldename, unter dem die Sitzung gegenwärtig ausgeführt wird. Den ursprünglichen Anmeldenamen, der die Sitzung erstellt hat, finden Sie unter original_login_name . Kann ein von SQL Server authentifizierter Anmeldename oder ein Benutzername aus einer von Windows authentifizierten Domäne sein. Lässt keine NULL-Werte zu. |
nt_domain | nvarchar(128) | Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen Die Windows-Domäne für den Client, wenn für die Sitzung die Windows-Authentifizierung oder eine vertrauenswürdige Verbindung verwendet wird. Dieser Wert ist für interne Sitzungen und andere Benutzer als Domänenbenutzer NULL. Lässt NULL-Werte zu. |
nt_user_name | nvarchar(128) | Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen Der Windows-Benutzername für den Client, wenn für die Sitzung die Windows-Authentifizierung oder eine vertrauenswürdige Verbindung verwendet wird. Dieser Wert ist für interne Sitzungen und andere Benutzer als Domänenbenutzer NULL. Lässt NULL-Werte zu. |
status | nvarchar(30) | Status der Sitzung. Mögliche Werte: Running – Aktuell wird mindestens eine Anforderung ausgeführt. Sleeping – Aktuell werden keine Anforderungen ausgeführt. Im Ruhezustand: Die Sitzung wurde aufgrund des Verbindungspoolings zurückgesetzt und befindet sich nun im Status vor einer Anmeldung. Preconnect– Die Sitzung ist in der Klassifizierungsfunktion der Ressourcenkontrolle. Lässt keine NULL-Werte zu. |
context_info | varbinary(128) | CONTEXT_INFO-Wert für die Sitzung. Die Kontextinformationen werden vom Benutzer mithilfe der SET CONTEXT_INFO-Anweisung festgelegt. Lässt NULL-Werte zu. |
cpu_time | int | Die von dieser Sitzung verwendete CPU-Zeit in Millisekunden. Lässt keine NULL-Werte zu. |
memory_usage | int | Anzahl der von der Sitzung verwendeten 8 KB-Speicherseiten. Lässt keine NULL-Werte zu. |
total_scheduled_time | int | Gesamtzeit in Millisekunden, die für die Ausführung der Sitzung (sowie der darin enthaltenen Anforderungen) eingeplant wurde. Lässt keine NULL-Werte zu. |
total_elapsed_time | int | Zeit in Millisekunden seit dem Einrichten der Sitzung. Lässt keine NULL-Werte zu. |
endpoint_id | int | ID des Endpunktes, der der Sitzung zugeordnet ist. Lässt keine NULL-Werte zu. |
last_request_start_time | datetime | Uhrzeit, zu der die letzte Anforderung in der Sitzung gestartet wurde. Dies schließt die derzeit ausgeführte Anforderung ein. Lässt keine NULL-Werte zu. |
last_request_end_time | datetime | Uhrzeit, zu der eine Anforderung in der Sitzung zuletzt abgeschlossen wurde. Lässt NULL-Werte zu. |
Lesevorgänge | bigint | Anzahl von Lesevorgängen von Anforderungen in dieser Sitzung oder während dieser Sitzung. Lässt keine NULL-Werte zu. |
Schreibvorgänge | bigint | Anzahl der Schreibvorgänge von Anforderungen in dieser Sitzung oder während dieser Sitzung. Lässt keine NULL-Werte zu. |
logical_reads | bigint | Anzahl logischer Lesevorgänge, die von Anforderungen in dieser Sitzung während dieser Sitzung durchgeführt wurden. Lässt keine NULL-Werte zu. |
is_user_process | bit | 0, wenn es sich um eine Systemsitzung handelt. Andernfalls ist der Wert 1. Lässt keine NULL-Werte zu. |
text_size | int | TEXTSIZE-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
language | nvarchar(128) | LANGUAGE-Einstellung für die Sitzung. Lässt NULL-Werte zu. |
date_format | nvarchar(3) | DATEFORMAT-Einstellung für die Sitzung. Lässt NULL-Werte zu. |
date_first | smallint | DATEFIRST-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
quoted_identifier | bit | QUOTED_IDENTIFIER-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
arithabort | bit | ARITHABORT-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
ansi_null_dflt_on | bit | ANSI_NULL_DFLT_ON-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
ansi_defaults | bit | ANSI_DEFAULTS-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
ansi_warnings | bit | ANSI_WARNINGS-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
ansi_padding | bit | ANSI_PADDING-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
ansi_nulls | bit | ANSI_NULLS-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
concat_null_yields_null | bit | CONCAT_NULL_YIELDS_NULL-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
transaction_isolation_level | smallint | Isolationsstufe für Transaktionen der Sitzung. 0 = Unspecified 1 = ReadUncommitted 2 = ReadCommitted 3 = RepeatableRead 4 = Serializable 5 = Momentaufnahme Lässt keine NULL-Werte zu. |
lock_timeout | int | LOCK_TIMEOUT-Einstellung für die Sitzung. Der Wert ist in Millisekunden angegeben. Lässt keine NULL-Werte zu. |
deadlock_priority | int | DEADLOCK_PRIORITY-Einstellung für die Sitzung. Lässt keine NULL-Werte zu. |
row_count | bigint | Anzahl der bisher in der Sitzung zurückgegebenen Zeilen. Lässt keine NULL-Werte zu. |
prev_error | int | ID des letzten in der Sitzung zurückgegebenen Fehlers. Lässt keine NULL-Werte zu. |
original_security_id | varbinary(85) | Microsoft Windows-Sicherheits-ID, die dem original_login_name Zugeordnet ist. Lässt keine NULL-Werte zu. |
original_login_name | nvarchar(128) | SQL Server-Anmeldename, der vom Client zum Erstellen dieser Sitzung verwendet wurde. Kann ein von SQL Server authentifizierter Anmeldename, ein Benutzername aus einer von Windows authentifizierten Domäne oder ein/eine Benutzer*in einer eigenständigen Datenbank sein. Die Sitzung hat nach der ersten Verbindung möglicherweise viele implizite oder explizite Kontextwechsel durchlaufen. Dies gilt beispielsweise für die Verwendung von EXECUTE AS. Lässt keine NULL-Werte zu. |
last_successful_logon | datetime | Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen Zeitpunkt der letzten erfolgreichen Anmeldung für original_login_name, bevor die aktuelle Sitzung gestartet wurde. |
last_unsuccessful_logon | datetime | Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen Zeitpunkt des letzten nicht erfolgreichen Anmeldeversuchs für original_login_name, bevor die aktuelle Sitzung gestartet wurde. |
unsuccessful_logons | bigint | Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen Anzahl der nicht erfolgreichen Anmeldeversuche für den original_login_name Zwischen- last_successful_logon und login_time . |
group_id | int | ID der Arbeitsauslastungsgruppe, zu der diese Sitzung gehört. Lässt keine NULL-Werte zu. |
database_id | smallint | Gilt für: SQL Server 2012 (11.x) und höhere Versionen Die ID der aktuellen Datenbank für jede Sitzung. In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers. |
authenticating_database_id | int | Gilt für: SQL Server 2012 (11.x) und höhere Versionen ID der Datenbank, die den Prinzipal authentifiziert. Bei Anmeldungen ist der Wert 0. Für Benutzer von eigenständigen Datenbanken ist der Wert die Datenbank-ID der eigenständigen Datenbank. |
open_transaction_count | int | Gilt für: SQL Server 2012 (11.x) und höhere Versionen Die Anzahl der offenen Transaktionen pro Sitzung. |
pdw_node_id | int | Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. |
page_server_reads | bigint | Gilt für: Azure SQL-Datenbank Hyperscale Anzahl von Seitenserver-Lesevorgängen, die von Anforderungen in dieser Sitzung während dieser Sitzung durchgeführt wurden. Lässt keine NULL-Werte zu. |
Berechtigungen
Jeder kann seine eigenen Sitzungsinformationen anzeigen.
SQL Server: Erfordert die VIEW SERVER STATE
-Berechtigung für SQL Server, um alle Sitzungen auf dem Server anzuzeigen.
SQL-Datenbank: Erfordert, dass für VIEW DATABASE STATE
alle Verbindungen mit der aktuellen Datenbank angezeigt werden. VIEW DATABASE STATE
kann in der master
-Datenbank nicht gewährt werden.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Bemerkungen
Wenn die Serverkonfigurationsoption Common Criteria-Kompatibilität aktiviert aktiviert ist, werden in den folgenden Spalten Anmeldestatistiken angezeigt.
last_successful_logon
last_unsuccessful_logon
unsuccessful_logons
Ist diese Option nicht aktiviert, geben diese Spalten NULL-Werte zurück. Weitere Informationen über das Festlegen dieser Serverkonfigurationsoption finden Sie unter Common Criteria-Kompatibilität aktiviert (Serverkonfigurationsoption).
Die Administratorverbindungen auf Azure SQL-Datenbank sehen eine Zeile pro authentifizierter Sitzung. Die im Resultset angezeigten „sa“-Sitzungen haben keine Auswirkungen auf das Benutzerkontingent für Sitzungen. Den Nicht-Administratorverbindungen werden nur Informationen im Zusammenhang mit ihren Datenbankbenutzersitzungen angezeigt.
Aufgrund von Unterschieden in der Art und Weise, wie sie aufgezeichnet werden, open_transaction_count
stimmen sie möglicherweise nicht übereinsys.dm_tran_session_transactions
open_transaction_count
.
Kardinalitäten von Beziehungen
From | Beschreibung | Für/Anwendung | Beziehung |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests | session_id | 1:0 oder 1:viele |
sys.dm_exec_sessions |
sys.dm_exec_connections | session_id | 1:0 oder 1:viele |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions | session_id | 1:0 oder 1:viele |
sys.dm_exec_sessions |
sys.dm_exec_cursors (session_id | 0) | session_id CROSS APPLY OUTER APPLY |
1:0 oder 1:viele |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage | session_id | 1:1 |
Beispiele
A. Ermitteln von Benutzer*innen, die mit dem Server verbunden sind
Im folgenden Beispiel werden die Benutzer ermittelt, die mit dem Server verbunden sind, und die Anzahl der Sitzungen für die einzelnen Benutzer zurückgegeben.
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B. Ermitteln von Cursorn mit langer Ausführungszeit
Im folgenden Beispiel werden die Cursor, die seit einer längeren Zeit als der angegebenen geöffnet sind, die Benutzer, die die Cursor erstellt haben, und die Sitzungen, in denen die Cursor verwendet werden, gesucht.
USE master;
GO
SELECT creation_time,
cursor_id,
name,
c.session_id,
login_name
FROM sys.dm_exec_cursors(0) AS c
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;
GO
C. Ermitteln von Sitzungen im Leerlauf, für die Transaktionen geöffnet sind
Im folgenden Beispiel werden Sitzungen gesucht, für die Transaktionen geöffnet sind und die sich im Leerlauf befinden. Sitzungen, für die derzeit keine Anforderung ausgeführt wird, befinden sich im Leerlauf.
SELECT s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS (
SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id
)
AND NOT EXISTS (
SELECT *
FROM sys.dm_exec_requests AS r
WHERE r.session_id = s.session_id
);
D: Ermitteln von Informationen über die eigene Verbindung einer Abfrage
Im folgenden Beispiel werden Informationen zur eigenen Verbindung einer Abfrage gesammelt:
SELECT c.session_id,
c.net_transport,
c.encrypt_option,
c.auth_scheme,
s.host_name,
s.program_name,
s.client_interface_name,
s.login_name,
s.nt_domain,
s.nt_user_name,
s.original_login_name,
c.connect_time,
s.login_time
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für