Partager via


sys.dm_exec_sessions (Transact-SQL)

Retourne une ligne par session authentifiée sur SQL Server. sys.dm_exec_sessions est une vue dans l'étendue du serveur qui affiche des informations sur toutes les connexions utilisateur et les tâches internes actives. Ces informations incluent la version du client, le nom du programme client, la durée de connexion du client, l'utilisateur de connexion, le paramètre de session active, et plus. Utilisez sys.dm_exec_sessions pour afficher d'abord la charge système actuelle et identifier une session d'intérêt, puis obtenez d'autres détails sur cette session en utilisant d'autres vues de gestion dynamique ou fonctions de gestion dynamique.

Les vues de gestion dynamique sys.dm_exec_connections, sys.dm_exec_sessions et sys.dm_exec_requests sont mappées à la table système sys.sysprocesses.

Nom de la colonne

Type de données

Description

session_id

smallint

Identifie la session associée à chaque connexion principale active. N'accepte pas la valeur NULL.

login_time

datetime

Heure à laquelle la session a été établie. N'accepte pas la valeur NULL.

host_name

nvarchar(128)

Nom de la station de travail cliente spécifique à une session. La valeur est NULL pour les sessions internes. Autorise la valeur NULL.

Remarque relative à la sécuritéRemarque relative à la sécurité

L'application cliente fournit le nom de la station de travail et peut fournir des données incorrectes. Ne vous fiez pas à HOST_NAME pour garantir la sécurité.

program_name

nvarchar(128)

Nom du programme client qui a lancé la session. La valeur est NULL pour les sessions internes. Autorise la valeur NULL.

host_process_id

int

ID de processus du programme client qui a lancé la session. La valeur est NULL pour les sessions internes. Autorise la valeur NULL.

client_version

int

Version du protocole TDS de l'interface utilisée par le client pour se connecter au serveur. La valeur est NULL pour les sessions internes. Autorise la valeur NULL.

client_interface_name

nvarchar(32)

Nom du protocole utilisé par le client pour se connecter au serveur. La valeur est NULL pour les sessions internes. Autorise la valeur NULL.

security_id

varbinary(85)

ID de sécurité Microsoft Windows associé à la connexion. N'accepte pas la valeur NULL.

login_name

nvarchar(128)

Nom de connexion SQL Server sous lequel la session s'exécute actuellement. Pour connaître le nom du compte de connexion d'origine qui a créé la session, consultez original_login_name. Il peut s'agir d'un nom de connexion authentifié SQL Server ou d'un nom d'utilisateur de domaine authentifié Windows. N'accepte pas la valeur NULL.

nt_domain

nvarchar(128)

Domaine Windows du client si la session utilise l'authentification Windows ou une connexion approuvée. La valeur est NULL pour les sessions internes et les utilisateurs qui n'appartiennent pas à un domaine. Autorise la valeur NULL.

nt_user_name

nvarchar(128)

Nom d'utilisateur Windows du client si la session utilise l'authentification Windows ou une connexion approuvée. La valeur est NULL pour les sessions internes et les utilisateurs qui n'appartiennent pas à un domaine. Autorise la valeur NULL.

status

nvarchar(30)

État de la session. Valeurs possibles :

  • Running - une ou plusieurs demandes sont en cours d'exécution

  • Sleeping - aucune demande n'est en cours d'exécution

  • Dormant – la session a été réinitialisée en raison d'un regroupement de connexions et est désormais dans un état de préconnexion.

  • Preconnect - la session est dans le classifieur du gouverneur de ressources.

N'accepte pas la valeur NULL.

context_info

varbinary(128)

Valeur CONTEXT_INFO pour la session. Les informations de contexte sont définies par l'utilisateur à l'aide de l'instruction SET CONTEXT_INFO. Autorise la valeur NULL.

cpu_time

int

Temps processeur, en millisecondes, utilisé par cette session. N'accepte pas la valeur NULL.

memory_usage

int

Nombre de pages de mémoire de 8 Ko utilisées par cette session. N'accepte pas la valeur NULL.

total_scheduled_time

int

Durée totale, en millisecondes, pour laquelle l'exécution de la session (demandes comprises) a été planifiée. N'accepte pas la valeur NULL.

total_elapsed_time

int

Temps écoulé, en millisecondes, depuis que la session a été établie. N'accepte pas la valeur NULL.

endpoint_id

int

ID du point de terminaison associé à la session. N'accepte pas la valeur NULL.

last_request_start_time

datetime

Heure à laquelle la dernière demande de la session a commencé. Cela inclut la demande en cours. N'accepte pas la valeur NULL.

last_request_end_time

datetime

Heure à laquelle s'est terminée pour la dernière fois une demande de la session. Autorise la valeur NULL.

reads

bigint

Nombre de lectures effectuées (par des demandes dans cette session) au cours de cette session. N'accepte pas la valeur NULL.

writes

bigint

Nombre d'écritures effectuées (par des demandes dans cette session) au cours de cette session. N'accepte pas la valeur NULL.

logical_reads

bigint

Nombre de lectures logiques qui ont été effectuées sur cette session. N'accepte pas la valeur NULL.

is_user_process

bit

0 si la session est une session système. Sinon, la valeur est 1. N'accepte pas la valeur NULL.

text_size

int

Paramètre TEXTSIZE pour la session. N'accepte pas la valeur NULL.

language

nvarchar(128)

Paramètre LANGUAGE pour la session. Autorise la valeur NULL.

date_format

nvarchar(3)

Paramètre DATEFORMAT pour la session. Autorise la valeur NULL.

date_first

smallint

Paramètre DATEFIRST pour la session. N'accepte pas la valeur NULL.

quoted_identifier

bit

Paramètre QUOTED_IDENTIFIER pour la session. N'accepte pas la valeur NULL.

arithabort

bit

Paramètre ARITHABORT pour la session. N'accepte pas la valeur NULL.

ansi_null_dflt_on

bit

Paramètre ANSI_NULL_DFLT_ON pour la session. N'accepte pas la valeur NULL.

ansi_defaults

bit

Paramètre ANSI_DEFAULTS pour la session. N'accepte pas la valeur NULL.

ansi_warnings

bit

Paramètre ANSI_WARNINGS pour la session. N'accepte pas la valeur NULL.

ansi_padding

bit

Paramètre ANSI_PADDING pour la session. N'accepte pas la valeur NULL.

ansi_nulls

bit

Paramètre ANSI_NULLS pour la session. N'accepte pas la valeur NULL.

concat_null_yields_null

bit

Paramètre CONCAT_NULL_YIELDS_NULL pour la session. N'accepte pas la valeur NULL.

transaction_isolation_level

smallint

Niveau d'isolement des transactions de la session.

0 = Non spécifié

1 = Lecture non validée

2 = Lecture validée

3 = Répétable

4 = Sérialisable

5 = Instantané

N'accepte pas la valeur NULL.

lock_timeout

int

Paramètre LOCK_TIMEOUT pour la session. Cette valeur est exprimée en millisecondes. N'accepte pas la valeur NULL.

deadlock_priority

int

Paramètre DEADLOCK_PRIORITY pour la session. N'accepte pas la valeur NULL.

row_count

bigint

Nombre de lignes retournées dans la session jusqu'à présent. N'accepte pas la valeur NULL.

prev_error

int

ID de la dernière erreur retournée dans la session. N'accepte pas la valeur NULL.

original_security_id

varbinary(85)

ID de sécurité Microsoft Windows associé à original_login_name. N'accepte pas la valeur NULL.

original_login_name

nvarchar(128)

Nom de connexion SQL Server utilisé par le client pour créer cette session. Il peut s'agir d'un nom de compte de connexion authentifié SQL Server, d'un nom d'utilisateur de domaine authentifié Windows ou d'un utilisateur de base de données à relation contenant-contenu. Notez que la session a pu faire l'objet de nombreux changements de contexte implicites ou explicites après la connexion initiale. Par exemple, si EXECUTE AS est utilisé. N'accepte pas la valeur NULL.

last_successful_logon

datetime

Heure de la dernière ouverture de session réussie pour original_login_name avant le démarrage de la session actuelle.

last_unsuccessful_logon

datetime

Heure de la dernière ouverture de session qui a échoué pour original_login_name avant le démarrage de la session actuelle.

unsuccessful_logons

bigint

Nombre de tentatives d'ouverture de session infructueuses pour original_login_name entre last_successful_logon et login_time.

group_id

int

ID du groupe de charge de travail auquel cette session appartient. N'accepte pas la valeur Null.

database_id

smallint

ID de la base de données active pour chaque session.

authenticating_database_id

int

ID de la base de données authentifiant le principal. Pour les comptes de connexion, la valeur sera de 0. Pour les utilisateurs de base de données à relation contenant-contenu, la valeur sera l'ID de la base de données à relation contenant-contenu.

open_transaction_count

int

Nombre de transactions ouvertes par session.

Autorisations

Nécessite l'autorisation VIEW SERVER STATE sur le serveur.

[!REMARQUE]

Si l'utilisateur bénéficie de l'autorisation VIEW SERVER STATE sur le serveur, il pourra voir toutes les sessions en cours d'exécution de l'instance de SQL Server ; sinon, il ne verra que la session en cours.

Notes

Lorsque l'option de configuration du serveur common criteria compliance enabled est activée, les statistiques de connexion sont affichées dans les colonnes suivantes.

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Si cette option n'est pas activée, ces colonnes retournent des valeurs NULL. Pour plus d'informations sur la définition de cette option de configuration du serveur, consultez Conformité des critères communs activée (option de configuration de serveur).

Cardinalités des relations

De

Vers

Actif/Appliquer

Relation

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Un-à-zéro ou un-à-plusieurs

sys.dm_exec_sessions

sys.dm_exec_connections

session_id

Un-à-zéro ou un-à-plusieurs

sys.dm_exec_sessions

sys.dm_tran_session_transactions

session_id

Un-à-zéro ou un-à-plusieurs

sys.dm_exec_sessions

sys.dm_exec_cursors(session_id | 0)

session_id CROSS APPLY

OUTER APPLY

Un-à-zéro ou un-à-plusieurs

sys.dm_exec_sessions

sys.dm_db_session_space_usage

session_id

Un à un

Exemples

A.Recherche des utilisateurs connectés au serveur

L'exemple suivant recherche les utilisateurs connectés au serveur et retourne le nombre de sessions pour chaque utilisateur.

SELECT login_name ,COUNT(session_id) AS session_count 
FROM sys.dm_exec_sessions 
GROUP BY login_name;

B.Recherche des curseurs longs

L'exemple suivant recherche les curseurs qui sont ouverts pendant plus longtemps que la durée fixée, l'auteur des curseurs et la session à laquelle appartiennent les curseurs.

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.Recherche des sessions inactives ayant des transactions ouvertes

L'exemple suivant recherche des sessions inactives ayant des transactions ouvertes. Une session inactive est une session qui n'a pas de demande en cours d'exécution.

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.Recherche d'informations à propos d'une connexion propre aux requêtes

Requête typique pour collecter des informations sur une connexion propre aux requêtes.

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
JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;

Voir aussi

Référence

Fonctions et vues de gestion dynamique (Transact-SQL)

Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)