Teilen über


sys.dm_exec_sessions (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

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

Um diese Ansicht aus Azure Synapse Analytics (nur dedizierter SQL-Pool) oder Analytics Platform System (PDW) aufzurufen, siehe sys.dm_pdw_nodes_exec_sessions. sys.dm_exec_sessions Use for Azure Synapse Analytics (nur serverless SQL pool) oder Microsoft Fabric.

Spaltenname Datentyp Nullwerte zulässig Description
session_id smallint Nein Identifiziert die einer aktiven primären Verbindung zugeordnete Sitzung.
login_time datetime Nein Uhrzeit, zu der die Sitzung eingerichtet wurde. Sitzungen, die zum Zeitpunkt der Abfrage dieses DMV nicht vollständig angemeldet sind, werden mit einer Anmeldezeit angezeigt 1900-01-01.
host_name nvarchar(128) Yes Name der Client-Arbeitsstation, die spezifisch für eine Sitzung ist. Der Wert ist NULL für interne Sitzungen.

Sicherheitshinweis: Die Clientanwendung stellt den Arbeitsstationsnamen bereit und kann ungenaue Daten bereitstellen. Verlassen Sie sich nicht als HOST_NAME Sicherheitsfeature.
program_name nvarchar(128) Yes Name des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist NULL für interne Sitzungen.
host_process_id int Yes Prozess-ID des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist NULL für interne Sitzungen.
client_version int Yes TDS-Protokollversion der Schnittstelle, die vom Client zur Verbindung mit dem Server verwendet wird. Der Wert ist NULL für interne Sitzungen.
client_interface_name nvarchar(32) Yes Name der Bibliothek/des Treibers, die bzw. der vom Client für die Kommunikation mit dem Server verwendet wird. Der Wert ist NULL für interne Sitzungen.
security_id varbinary(85) Nein Windows-Sicherheits-ID, die der Anmeldung zugeordnet ist.
login_name nvarchar(128) Nein 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.
nt_domain nvarchar(128) Yes 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 gilt NULL für interne Sitzungen und Nicht-Domänenbenutzer.
nt_user_name nvarchar(128) Yes Der Windows-Benutzername für den Client, wenn für die Sitzung die Windows-Authentifizierung oder eine vertrauenswürdige Verbindung verwendet wird. Dieser Wert gilt NULL für interne Sitzungen und Nicht-Domänenbenutzer.
status nvarchar(30) Nein Status der Sitzung. Mögliche Werte:

Running - Derzeit wird eine oder mehrere Anforderungen ausgeführt
Sleeping - Zurzeit werden keine Anforderungen ausgeführt
Dormant – Die Sitzung wurde aufgrund von Verbindungspooling zurückgesetzt und befindet sich jetzt im Zustand "Prelogin".
Preconnect – Die Sitzung befindet sich im Klassifizierer "Ressourcenkontrolle".
context_info varbinary(128) Yes CONTEXT_INFO wert für die Sitzung. Die Kontextinformationen werden vom Benutzer mithilfe der SET CONTEXT_INFO-Anweisung festgelegt.
cpu_time int Nein Die von dieser Sitzung verwendete CPU-Zeit in Millisekunden.
memory_usage int Nein Anzahl der von der Sitzung verwendeten 8 KB-Speicherseiten.
total_scheduled_time int Nein Gesamtzeit in Millisekunden, die für die Ausführung der Sitzung (sowie der darin enthaltenen Anforderungen) eingeplant wurde.
total_elapsed_time int Nein Zeit in Millisekunden seit dem Einrichten der Sitzung.
endpoint_id int Nein ID des Endpunkts, der der Sitzung zugeordnet ist.
last_request_start_time datetime Nein Uhrzeit, zu der die letzte Anforderung in der Sitzung gestartet wurde. Diese Zeit schließt die aktuell ausgeführte Anforderung ein.
last_request_end_time datetime Yes Uhrzeit, zu der eine Anforderung in der Sitzung zuletzt abgeschlossen wurde.
reads bigint Nein Anzahl der physischen Lesungen, die auf Anfrage in dieser Sitzung durchgeführt wurden.
writes 1 bigint Nein Anzahl der physischen Schreibvorgänge, die auf Anfragen in dieser Sitzung während dieser Sitzung durchgeführt werden.
logical_reads bigint Nein Anzahl logischer Lesevorgänge, die von Anforderungen in dieser Sitzung während dieser Sitzung durchgeführt wurden.
is_user_process bit Nein 0 wenn es sich bei der Sitzung um eine Systemsitzung handelt. Andernfalls ist das Ergebnis 1.
text_size int Nein TEXTSIZE Einstellung für die Sitzung.
language nvarchar(128) Yes LANGUAGE Einstellung für die Sitzung.
date_format nvarchar(3) Yes DATEFORMAT Einstellung für die Sitzung.
date_first smallint Nein DATEFIRST Einstellung für die Sitzung.
quoted_identifier bit Nein QUOTED_IDENTIFIER Einstellung für die Sitzung.
arithabort bit Nein ARITHABORT Einstellung für die Sitzung.
ansi_null_dflt_on bit Nein ANSI_NULL_DFLT_ON Einstellung für die Sitzung.
ansi_defaults bit Nein ANSI_DEFAULTS Einstellung für die Sitzung.
ansi_warnings bit Nein ANSI_WARNINGS Einstellung für die Sitzung.
ansi_padding bit Nein ANSI_PADDING Einstellung für die Sitzung.
ansi_nulls bit Nein ANSI_NULLS Einstellung für die Sitzung.
concat_null_yields_null bit Nein CONCAT_NULL_YIELDS_NULL Einstellung für die Sitzung.
transaction_isolation_level smallint Nein Isolationsstufe für Transaktionen der Sitzung.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int Nein LOCK_TIMEOUT Einstellung für die Sitzung. Der Wert ist in Millisekunden angegeben.
deadlock_priority int Nein DEADLOCK_PRIORITY Einstellung für die Sitzung.
row_count bigint Nein Anzahl der bisher in der Sitzung zurückgegebenen Zeilen.
prev_error int Nein ID des letzten in der Sitzung zurückgegebenen Fehlers.
original_security_id varbinary(85) Nein Windows-Sicherheits-ID, die der original_login_name.
original_login_name nvarchar(128) Nein 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 könnte nach der Erstverbindung viele implizite oder explizite Kontextwechsel durchlaufen haben, zum Beispiel wenn EXECUTE AS verwendet wird.
last_successful_logon datetime Yes Zeitpunkt der letzten erfolgreichen Anmeldung für die original_login_name vor dem Start der aktuellen Sitzung.
last_unsuccessful_logon datetime Yes Zeitpunkt des letzten erfolglosen Anmeldeversuchs für die original_login_name vor dem Start der aktuellen Sitzung.
unsuccessful_logons bigint Yes Anzahl der nicht erfolgreichen Anmeldeversuche für den original_login_name Zwischen- last_successful_logon und login_time.
group_id int Nein ID der Arbeitsauslastungsgruppe, zu der diese Sitzung gehört.
database_id smallint Nein Die ID der aktuellen Datenbank für jede Sitzung.

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers.

Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
authenticating_database_id int Yes ID der Datenbank, die den Prinzipal authentifiziert. Bei Anmeldungen lautet 0der Wert . Für enthaltene Datenbankbenutzer ist der Wert die Datenbank-ID der enthaltenen Datenbank.

Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
open_transaction_count int Nein Die Anzahl der offenen Transaktionen pro Sitzung.

Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
pdw_node_id int Nein Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Gilt für: Azure Synapse Analytics und Analytics Platform System (PDW).
page_server_reads bigint Nein Anzahl von Seitenserver-Lesevorgängen, die von Anforderungen in dieser Sitzung während dieser Sitzung durchgeführt wurden.

Gilt für: Azure SQL-Datenbank Hyperscale.
contained_availability_group_id uniqueidentifier Yes ID der enthaltenen Verfügbarkeitsgruppe.

Gilt für: SQL Server 2025 (17.x) und neuere Versionen.

1 Spezifiziert, wenn eine Seite im Pufferpool als schmutzig markiert wird. Dieser Wert entspricht nicht direkt tatsächlichen Schreibvorgängen, da dieselbe Seite mehr als einmal markiert werden kann. Diese Zähler werden am Ende der Charge aggregiert.

Berechtigungen

Jeder kann seine eigenen Sitzungsinformationen anzeigen.

In SQL Server 2019 (15.x) und früheren Versionen müssen VIEW SERVER STATE alle Sitzungen auf dem Server angezeigt werden. In SQL Server 2022 (16.x) und höheren Versionen ist die Berechtigung auf dem Server erforderlich VIEW SERVER PERFORMANCE STATE .

In SQL-Datenbank müssen VIEW DATABASE STATE alle Verbindungen mit der aktuellen Datenbank angezeigt werden. VIEW DATABASE STATE kann in der master-Datenbank nicht gewährt werden.

Hinweise

Wenn die common criteria compliance enabled Serverkonfigurationsoption aktiviert ist, werden Anmeldestatistiken in den folgenden Spalten angezeigt.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Wenn diese Option nicht aktiviert ist, geben diese Spalten NULL-Werte zurück. Weitere Informationen zur Einstellung dieser Serverkonfigurationsoption finden Sie unter Konfiguration der Einhaltung gemeinsamer Kriterien.

Die Administratorverbindungen auf Azure SQL-Datenbank sehen eine Zeile pro authentifizierter Sitzung. Die sa Sitzungen, die im Resultset angezeigt werden, wirken sich nicht auf das Benutzerkontingent für Sitzungen aus. Die Nicht-Administratorverbindungen sehen nur Informationen zu ihren Datenbankbenutzersitzungen.

Aufgrund von Unterschieden in der Art und Weise, wie sie aufgezeichnet werden, open_transaction_count stimmen sie möglicherweise nicht übereinsys.dm_tran_session_transactionsopen_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 gefunden, die für mehr als einen bestimmten Zeitraum geöffnet waren, wer die Cursor erstellt hat und auf welcher Sitzung sich die Cursor befinden.

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;

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: Suchen von Informationen zur eigenen 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;