Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Point de terminaison d’analytique SQL dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL 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 appeler cette vue depuis Azure Synapse Analytics (pool SQL dédié uniquement) ou Analytics Platform System (PDW), voir sys.dm_pdw_nodes_exec_sessions. Utilisez sys.dm_exec_sessions pour Azure Synapse Analytics (pool SQL serverless uniquement) ou Microsoft Fabric.
| Nom de la colonne | Type de données | Pouvant être nul | Descriptif |
|---|---|---|---|
session_id |
smallint | Non | Identifie la session associée à chaque connexion principale active. |
login_time |
datetime | Non | Heure à laquelle la session a été établie. Les sessions qui ne se sont pas complètement connectées au moment où cette vue DMV est interrogée sont affichées avec une heure de connexion de 1900-01-01. |
host_name |
nvarchar(128) | Oui | Nom de la station de travail client spécifique à une session. La valeur concerne NULL les sessions internes.Remarque de sécurité : l’application cliente fournit le nom de la station de travail et peut fournir des données inexactes. Ne vous fiez pas en HOST_NAME tant que fonctionnalité de sécurité. |
program_name |
nvarchar(128) | Oui | Nom du programme client qui a lancé la session. La valeur concerne NULL les sessions internes. |
host_process_id |
int | Oui | ID de processus du programme client qui a lancé la session. La valeur concerne NULL les sessions internes. |
client_version |
int | Oui | Version du protocole TDS de l’interface utilisée par le client pour se connecter au serveur. La valeur concerne NULL les sessions internes. |
client_interface_name |
nvarchar(32) | Oui | Nom de la bibliothèque/du pilote utilisé par le client pour communiquer avec le serveur. La valeur concerne NULL les sessions internes. |
security_id |
varbinary(85) | Non | ID de sécurité Windows associé à la connexion. |
login_name |
nvarchar(128) | Non | 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. |
nt_domain |
nvarchar(128) | Oui | Domaine Windows du client si la session utilise l'authentification Windows ou une connexion approuvée. Cette valeur concerne NULL les sessions internes et les utilisateurs non de domaine. |
nt_user_name |
nvarchar(128) | Oui | Nom d'utilisateur Windows du client si la session utilise l'authentification Windows ou une connexion approuvée. Cette valeur concerne NULL les sessions internes et les utilisateurs non de domaine. |
status |
nvarchar(30) | Non | État de la session. Valeurs possibles :Running - En cours d’exécution d’une ou plusieurs requêtesSleeping - Actuellement en cours d’exécution aucune demandeDormant - La session a été réinitialisée en raison du regroupement de connexions et est désormais en état de prélogination.Preconnect - La session se trouve dans le classifieur Resource Governor. |
context_info |
varbinary(128) | Oui |
CONTEXT_INFO valeur de la session. Les informations de contexte sont définies par l’utilisateur à l’aide de l’instruction SET CONTEXT_INFO. |
cpu_time |
int | Non | Temps processeur, en millisecondes, utilisé par cette session. |
memory_usage |
int | Non | Nombre de pages de mémoire de 8 Ko utilisées par cette session. |
total_scheduled_time |
int | Non | Durée totale, en millisecondes, pour laquelle l'exécution de la session (demandes comprises) a été planifiée. |
total_elapsed_time |
int | Non | Temps écoulé, en millisecondes, depuis que la session a été établie. |
endpoint_id |
int | Non | ID du point de terminaison associé à la session. |
last_request_start_time |
datetime | Non | Heure à laquelle la dernière demande de la session a commencé. Cette fois inclut la demande en cours d’exécution. |
last_request_end_time |
datetime | Oui | Heure à laquelle s'est terminée pour la dernière fois une demande de la session. |
reads |
bigint | Non | Nombre de lectures physiques effectuées, sur demande lors de cette session, pendant cette session. |
writes
1 |
bigint | Non | Nombre d’écritures physiques effectuées, à la demande de cette session, pendant cette session. |
logical_reads |
bigint | Non | Nombre de lectures logiques effectuées (par des demandes dans cette session) au cours de cette session. |
is_user_process |
bit | Non |
0 si la session est une session système. Dans le cas contraire, il prend la valeur 1. |
text_size |
int | Non |
TEXTSIZE paramètre de la session. |
language |
nvarchar(128) | Oui |
LANGUAGE paramètre de la session. |
date_format |
nvarchar(3) | Oui |
DATEFORMAT paramètre de la session. |
date_first |
smallint | Non |
DATEFIRST paramètre de la session. |
quoted_identifier |
bit | Non |
QUOTED_IDENTIFIER paramètre de la session. |
arithabort |
bit | Non |
ARITHABORT paramètre de la session. |
ansi_null_dflt_on |
bit | Non |
ANSI_NULL_DFLT_ON paramètre de la session. |
ansi_defaults |
bit | Non |
ANSI_DEFAULTS paramètre de la session. |
ansi_warnings |
bit | Non |
ANSI_WARNINGS paramètre de la session. |
ansi_padding |
bit | Non |
ANSI_PADDING paramètre de la session. |
ansi_nulls |
bit | Non |
ANSI_NULLS paramètre de la session. |
concat_null_yields_null |
bit | Non |
CONCAT_NULL_YIELDS_NULL paramètre de la session. |
transaction_isolation_level |
smallint | Non | Niveau d'isolement des transactions de la session.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = Snapshot |
lock_timeout |
int | Non |
LOCK_TIMEOUT paramètre de la session. Cette valeur est exprimée en millisecondes. |
deadlock_priority |
int | Non |
DEADLOCK_PRIORITY paramètre de la session. |
row_count |
bigint | Non | Nombre de lignes retournées dans la session jusqu'à présent. |
prev_error |
int | Non | ID de la dernière erreur retournée dans la session. |
original_security_id |
varbinary(85) | Non | ID de sécurité Windows associé au original_login_name. |
original_login_name |
nvarchar(128) | Non | 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 pouvait avoir été utilisée par de nombreux changements de contexte implicites ou explicites après la connexion initiale, par exemple, si EXECUTE AS était utilisé. |
last_successful_logon |
datetime | Oui | Heure de la dernière ouverture de session réussie avant le original_login_name démarrage de la session active. |
last_unsuccessful_logon |
datetime | Oui | Heure de la dernière tentative d’ouverture de session infructueuse avant original_login_name le démarrage de la session active. |
unsuccessful_logons |
bigint | Oui | Nombre de tentatives d’ouverture de session infructueuses pour l’entre le original_login_name et last_successful_logon.login_time |
group_id |
int | Non | ID du groupe de charge de travail auquel cette session appartient. |
database_id |
smallint | Non | ID de la base de données active pour chaque session. Dans la base de données Azure SQL, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique. S’applique à : SQL Server 2012 (11.x) et versions ultérieures. |
authenticating_database_id |
int | Oui | 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 autonome, la valeur est l’ID de base de données de la base de données autonome.S’applique à : SQL Server 2012 (11.x) et versions ultérieures. |
open_transaction_count |
int | Non | Nombre de transactions ouvertes par session. S’applique à : SQL Server 2012 (11.x) et versions ultérieures. |
pdw_node_id |
int | Non | Identificateur du nœud sur lequel cette distribution est activée. S’applique à : Azure Synapse Analytics et Système de plateforme d’analyse (PDW). |
page_server_reads |
bigint | Non | Nombre de lectures serveur de pages (par des demandes dans cette session) au cours de cette session. S’applique à : Azure SQL Database Hyperscale. |
contained_availability_group_id |
uniqueidentifier | Oui | ID du groupe de disponibilité contenu. S’applique à : SQL Server 2025 (17.x) et versions ultérieures. |
1 Précise lorsqu’une page est marquée comme sale dans le pool tampon. Cette valeur ne correspond pas directement aux écritures réelles, car la même page peut être marquée plus d’une fois. Ces compteurs sont agrégés à la fin du lot.
autorisations
Tout le monde peut voir ses propres informations de session.
Dans SQL Server 2019 (15.x) et les versions antérieures, vous devez VIEW SERVER STATE voir toutes les sessions sur le serveur. Dans SQL Server 2022 (16.x) et versions ultérieures, nécessite VIEW SERVER PERFORMANCE STATE une autorisation sur le serveur.
Dans SQL Database, vous devez VIEW DATABASE STATE voir toutes les connexions à la base de données active.
VIEW DATABASE STATE ne peut pas être accordé dans la base de données master.
Notes
Lorsque l’option de configuration du common criteria compliance enabled serveur est activée, les statistiques d’ouverture de session sont affichées dans les colonnes suivantes.
last_successful_logonlast_unsuccessful_logonunsuccessful_logons
Si cette option n’est pas activée, ces colonnes retournent des valeurs Null. Pour plus d’informations sur la façon de définir cette option de configuration serveur, voir Activer la configuration de conformité aux critères communs.
Les connexions d’administrateur sur Azure SQL Database voient une ligne par session authentifiée. Les sa sessions qui apparaissent dans l’ensemble de résultats n’ont aucun effet sur le quota d’utilisateurs pour les sessions. Les connexions non-administrateur voient uniquement les informations relatives à leurs sessions utilisateur de base de données.
En raison des différences de la façon dont ils sont enregistrés, open_transaction_count il se peut qu’ils ne correspondent sys.dm_tran_session_transactionspas à .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 APPLYOUTER 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 ouverts pendant plus d’une période spécifique, qui a créé les curseurs et quelle session les curseurs sont activés.
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. 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. Rechercher des informations sur la connexion d’une requête
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;