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. Lässt NULL-Werte zu.
WertTDS-VersionSQL Server-Version
04.2SQL Server 6.x
16.0SQL Server 6.x
27.0SQL Server 7.0
37.1SQL Server 2000
47.1 Revision 1SQL Server 2000 mit Service Pack 1
57.2SQL Server 2005
67.3SQL Server 2008
|
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:
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 = Snapshot 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.
Hinweis |
---|
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
);
Änderungsverlauf
Aktualisierter Inhalt |
---|
Der Beschreibung für die Spalte client_version wurden Werte hinzugefügt. |