sys.dm_exec_sessions (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

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 concernent la version du client, le nom du programme client, l'heure de connexion du client, l'utilisateur connecté, le paramètre de session en cours, etc. Utilisez sys.dm_exec_sessions pour d’abord consulter la charge système en cours et pour identifier une session d’intérêt, puis pour en savoir plus sur cette session en faisant appel à d’autres vues 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.

Notes

Pour l’appeler à partir d’un pool SQL dédié dans Azure Synapse Analytics ou Analytics Platform System (PDW), consultez sys.dm_pdw_nodes_exec_sessions. Pour le pool SQL serverless ou Microsoft Fabric, utilisez sys.dm_exec_sessions.

Nom de la colonne Type de données Description et informations spécifiques à la version
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. Les sessions qui n’ont pas terminé la connexion, au moment où cette DMV est interrogée, s’affichent avec une heure de connexion de 1900-01-01.
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 liée à 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 de la bibliothèque/du pilote utilisé par le client pour communiquer avec le 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 le nom 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) S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures

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) S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures

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.
lectures bigint Nombre de lectures effectuées (par des demandes dans cette session) au cours de cette session. N'accepte pas la valeur NULL.
écritures 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 effectuées (par des demandes dans cette session) au cours de 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.
langage 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 = ReadUncommitted

2 = Lecture validée

3 = RepeatableRead

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é au 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 autonome. 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 S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures

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 S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures

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 S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures

Nombre de tentatives d’ouverture de session infructueuses pour l’entre le last_successful_logon et login_time.original_login_name
group_id int ID du groupe de charge de travail auquel cette session appartient. N'accepte pas la valeur NULL.
database_id smallint S’applique à : SQL Server 2012 (11.x) et ultérieur

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

Dans Azure SQL Database, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique.
authenticating_database_id int S’applique à : SQL Server 2012 (11.x) et ultérieur

ID de la base de données authentifiant le principal. Pour les connexions, la valeur est 0. Pour les utilisateurs de base de données non autonome, la valeur sera l'ID de la base de données autonome.
open_transaction_count int S’applique à : SQL Server 2012 (11.x) et ultérieur

Nombre de transactions ouvertes par session.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.
page_server_reads bigint S’applique à : Azure SQL Database Hyperscale

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

Autorisations

Tout le monde peut voir ses propres informations de session.

SQL Server : nécessite l’autorisation VIEW SERVER STATE sur SQL Server pour afficher toutes les sessions sur le serveur.

SQL Database : nécessite VIEW DATABASE STATE pour afficher toutes les connexions à la base de données active. VIEW DATABASE STATE ne peut pas être accordé dans la base de données master.

Autorisations pour SQL Server 2022 (et versions plus récentes)

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

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 Option de configuration common criteria compliance enabled.

Les connexions d’administrateur sur Azure SQL Database voient une ligne par session authentifiée. Les sessions « sa » qui apparaissent dans le jeu de résultats n’ont aucun effet sur le quota d’utilisateurs pour les sessions. Les connexions non administrateur ne voient que les informations relatives aux sessions utilisateur de leur base de données.

En raison des différences de la façon dont ils sont enregistrés, open_transaction_count peuvent ne pas correspondre sys.dm_tran_session_transactionsà .open_transaction_count.

Cardinalités de la relation

Du À 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

R. 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
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. 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

L’exemple suivant collecte des informations sur la propre connexion d’une requête :

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;

Étapes suivantes