sys.dm_exec_sessions (Transact-SQL)

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 Tasks. 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, und informieren Sie sich dann in dynamischen Verwaltungssichten oder dynamischen Verwaltungsfunktionen weiter über diese Sitzung.

Die dynamischen Verwaltungssichten sys.dm_exec_connections, sys.dm_exec_sessions und sys.dm_exec_requests werden der sys.sysprocesses-Systemtabelle zugeordnet.

Spaltenname

Datentyp

Beschreibung

session_id

smallint

Identifiziert die einer aktiven primären Verbindung zugeordnete Sitzung. NULL ist nicht zulässig.

login_time

datetime

Uhrzeit, zu der die Sitzung eingerichtet wurde. NULL ist nicht zulässig.

host_name

nvarchar(128)

Name der für eine Sitzung spezifischen Clientarbeitsstation. Der Wert ist für interne Sitzungen NULL. NULL ist zulässig.

program_name

nvarchar(128)

Name des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist für interne Sitzungen NULL. NULL ist zulässig.

host_process_id

int

Prozess-ID des Clientprogramms, mit dem die Sitzung initiiert wurde. Der Wert ist für interne Sitzungen NULL. NULL ist zulässig.

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. NULL ist zulässig.

client_interface_name

nvarchar(32)

Der vom Client für die Verbindung mit dem Server verwendete Protokollname. Der Wert ist für interne Sitzungen NULL. NULL ist zulässig.

security_id

varbinary(85)

Microsoft Windows-Sicherheits-ID, die der Anmeldung zugeordnet ist. NULL ist nicht zulässig.

login_name

nvarchar(128)

SQL Server-Anmeldename, unter dem die Sitzung gegenwärtig ausgeführt wird. Den ursprünglichen Anmeldenamen, mit dem die Sitzung erstellt wurde, finden Sie unter original_login_name. Kann ein authentifizierter Anmeldename von SQL Server oder ein authentifizierter Benutzername einer Windows-Domäne sein. NULL ist nicht zulässig.

nt_domain

nvarchar(128)

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. NULL ist zulässig.

nt_user_name

nvarchar(128)

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. NULL ist zulässig.

status

nvarchar(30)

Status der Sitzung. Mögliche Werte:

  • Running – Aktuell wird mindestens eine Anforderung ausgeführt.

  • Sleeping – Aktuell werden keine Anforderungen ausgeführt.

  • Dormant – Die Sitzung wurde aufgrund des Verbindungspoolings zurückgesetzt und befindet sich nun im Status vor einer Anmeldung.

  • Preconnect- Sitzung ist in der Klassifizierungsfunktion der Ressourcenkontrolle.

NULL ist nicht zulässig.

context_info

varbinary(128)

CONTEXT_INFO-Wert für die Sitzung. Die Kontextinformationen werden vom Benutzer mithilfe der SET CONTEXT_INFO-Anweisung festgelegt. NULL ist zulässig.

cpu_time

int

Die von der Sitzung verwendete CPU-Zeit in Millisekunden. NULL ist nicht zulässig.

memory_usage

int

Anzahl der von der Sitzung verwendeten 8 KB-Speicherseiten. NULL ist nicht zulässig.

total_scheduled_time

int

Gesamtzeit in Millisekunden, die für die Ausführung der Sitzung (sowie der darin enthaltenen Anforderungen) eingeplant wurde. NULL ist nicht zulässig.

total_elapsed_time

int

Zeit in Millisekunden seit dem Einrichten der Sitzung. NULL ist nicht zulässig.

endpoint_id

int

ID des Endpunktes, der der Sitzung zugeordnet ist. NULL ist nicht zulässig.

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. NULL ist nicht zulässig.

last_request_end_time

datetime

Uhrzeit, zu der eine Anforderung in der Sitzung zuletzt abgeschlossen wurde. NULL ist zulässig.

reads

bigint

Anzahl von Lesevorgängen von Anforderungen in dieser Sitzung oder während dieser Sitzung. NULL ist nicht zulässig.

writes

bigint

Anzahl der Schreibvorgänge von Anforderungen in dieser Sitzung oder während dieser Sitzung. NULL ist nicht zulässig.

logical_reads

bigint

Anzahl von logischen Lesevorgängen in der Sitzung. NULL ist nicht zulässig.

is_user_process

bit

0, wenn es sich um eine Systemsitzung handelt. Andernfalls ist der Wert 1. NULL ist nicht zulässig.

text_size

int

TEXTSIZE-Einstellung für die Sitzung. NULL ist nicht zulässig.

language

nvarchar(128)

LANGUAGE-Einstellung für die Sitzung. NULL ist zulässig.

date_format

nvarchar(3)

DATEFORMAT-Einstellung für die Sitzung. NULL ist zulässig.

date_first

smallint

DATEFIRST-Einstellung für die Sitzung. NULL ist nicht zulässig.

quoted_identifier

bit

QUOTED_IDENTIFIER-Einstellung für die Sitzung. NULL ist nicht zulässig.

arithabort

bit

ARITHABORT-Einstellung für die Sitzung. NULL ist nicht zulässig.

ansi_null_dflt_on

bit

ANSI_NULL_DFLT_ON-Einstellung für die Sitzung. NULL ist nicht zulässig.

ansi_defaults

bit

ANSI_DEFAULTS-Einstellung für die Sitzung. NULL ist nicht zulässig.

ansi_warnings

bit

ANSI_WARNINGS-Einstellung für die Sitzung. NULL ist nicht zulässig.

ansi_padding

bit

ANSI_PADDING-Einstellung für die Sitzung. NULL ist nicht zulässig.

ansi_nulls

bit

ANSI_NULLS-Einstellung für die Sitzung. NULL ist nicht zulässig.

concat_null_yields_null

bit

CONCAT_NULL_YIELDS_NULL-Einstellung für die Sitzung. NULL ist nicht zulässig.

transaction_isolation_level

smallint

Isolationsstufe für Transaktionen der Sitzung.

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Momentaufnahme

NULL ist nicht zulässig.

lock_timeout

int

LOCK_TIMEOUT-Einstellung für die Sitzung. Der Wert ist in Millisekunden angegeben. NULL ist nicht zulässig.

deadlock_priority

int

DEADLOCK_PRIORITY-Einstellung für die Sitzung. NULL ist nicht zulässig.

row_count

bigint

Anzahl der bisher in der Sitzung zurückgegebenen Zeilen. NULL ist nicht zulässig.

prev_error

int

ID des letzten in der Sitzung zurückgegebenen Fehlers. NULL ist nicht zulässig.

original_security_id

varbinary(85)

Microsoft Windows-Sicherheits-ID, die original_login_name zugeordnet ist. NULL ist nicht zulässig.

original_login_name

nvarchar(128)

SQL Server-Anmeldename, der vom Client zum Erstellen dieser Sitzung verwendet wurde. Kann ein authentifizierter Anmeldename von SQL Server oder ein authentifizierter Benutzername einer Windows-Domäne sein. Beachten Sie, dass für die Sitzung nach der ersten Verbindung möglicherweise viele implizite oder explizite Kontextwechsel erfolgt sind. Beispielsweise wenn EXECUTE AS verwendet wird. NULL ist nicht zulässig.

last_successful_logon

datetime

Zeitpunkt der letzten erfolgreichen Anmeldung für original_login_name, bevor die aktuelle Sitzung gestartet wurde.

last_unsuccessful_logon

datetime

Zeitpunkt des letzten nicht erfolgreichen Anmeldeversuchs für original_login_name, bevor die aktuelle Sitzung gestartet wurde.

unsuccessful_logons

bigint

Anzahl der nicht erfolgreichen Anmeldeversuche für original_login_name zwischen last_successful_logon und login_time.

group_id

int

ID der Arbeitsauslastungsgruppe, zu der diese Sitzung gehört. NULL ist nicht zulässig.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

HinweisHinweis

Wenn der Benutzer die VIEW SERVER STATE-Berechtigung auf dem Server besitzt, kann er alle zurzeit ausgeführten Sitzungen für die Instanz von SQL Server anzeigen; andernfalls wird dem Benutzer nur die aktuelle Sitzung angezeigt.

Hinweise

Anmeldestatistiken für Common Criteria-Kompatibilität

Wenn die Option Common Criteria-Kompatibilität aktiviert mithilfe der gespeicherten Prozedur sp_configure aktiviert wird, werden die Anmeldestatistiken in den folgenden Spalten von sys.dm_exec_sessions gespeichert und angezeigt:

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Wenn diese Serverkonfigurationsoption nicht aktiviert ist, geben diese sys.dm_exec_sessions-Spalten NULL-Werte zurück. Weitere Informationen zum Festlegen dieser Serverkonfigurationsoption finden Sie unter Common Criteria-Kompatibilität aktiviert (Option).

Kardinalität der Beziehungen

Von

In

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 der Benutzer, 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. Suchen von lange ausgeführten Cursorn

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 
JOIN sys.dm_exec_sessions AS s 
   ON c.session_id = s.session_id 
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

C. Suchen 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
    );