sp_who (Transact-SQL)sp_who (Transact-SQL)

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions)

Fournit des informations sur les utilisateurs, les sessions et les processus actuels dans une instance du MicrosoftMicrosoft Moteur de base de données SQL ServerSQL Server Database Engine .Provides information about current users, sessions, and processes in an instance of the MicrosoftMicrosoft Moteur de base de données SQL ServerSQL Server Database Engine. Les informations peuvent être filtrées afin de retourner uniquement les processus qui ne sont pas inactifs, ou qui appartiennent à un utilisateur ou à une session spécifique.The information can be filtered to return only those processes that are not idle, that belong to a specific user, or that belong to a specific session.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]  

ArgumentsArguments

[ @loginame = ] 'login' | session ID | 'ACTIVE' Est utilisé pour filtrer le jeu de résultats.[ @loginame = ] 'login' | session ID | 'ACTIVE' Is used to filter the result set.

login est de type sysname et identifie les processus appartenant à une connexion particulière.login is sysname that identifies processes belonging to a particular login.

l' ID de session est un numéro d’identification de session appartenant à l' SQL ServerSQL Server instance.session ID is a session identification number belonging to the SQL ServerSQL Server instance. l' ID de session est smallint.session ID is smallint.

Active exclut les sessions en attente de la prochaine commande de l’utilisateur.ACTIVE excludes sessions that are waiting for the next command from the user.

Si aucune valeur n'est fournie, la procédure répertorie toutes les sessions appartenant à l'instance.If no value is provided, the procedure reports all sessions belonging to the instance.

Codet de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

Jeux de résultatsResult Sets

sp_who retourne un jeu de résultats avec les informations suivantes.sp_who returns a result set with the following information.

ColonneColumn Type de donnéesData type DescriptionDescription
spidspid smallintsmallint ID de la session.Session ID.
ECIDecid smallintsmallint ID du contexte d'exécution d'un thread donné associé à un ID de session spécifique.Execution context ID of a given thread associated with a specific session ID.

ECID = {0, 1, 2, 3,... n}, où 0 représente toujours le thread principal ou parent et {1, 2, 3,... n} représente les sous-threads.ECID = {0, 1, 2, 3, ...n}, where 0 always represents the main or parent thread, and {1, 2, 3, ...n} represent the subthreads.
statutstatus nchar(30)nchar(30) État du processusProcess status. Les valeurs possibles sont les suivantes :The possible values are:

dormant.dormant. SQL ServerSQL Server réinitialise la session.is resetting the session.

en cours d’exécution.running. La session exécute un ou plusieurs traitements.The session is running one or more batches. Lorsque la fonctionnalité MARS (Multiple Active Result Sets) est activée, une session peut exécuter plusieurs traitements.When Multiple Active Result Sets (MARS) is enabled, a session can run multiple batches. Pour plus d’informations, consultez Utilisation de MARS (Multiple Active Result Sets).For more information, see Using Multiple Active Result Sets (MARS).

arrière-plan.background. La session exécute une tâche en arrière-plan, telle qu'une détection de blocage.The session is running a background task, such as deadlock detection.

restauration.rollback. Un processus d'annulation est en cours dans la session.The session has a transaction rollback in process.

en attente.pending. La session attend qu'un thread de travail soit disponible.The session is waiting for a worker thread to become available.

exécutable.runnable. La tâche de la session figure dans la file d'attente exécutable d'un planificateur lors de l'attente de l'obtention d'un quantum.The session's task is in the runnable queue of a scheduler while waiting to get a time quantum.

spinloop.spinloop. La tâche de la session attend qu'un verrouillage total de l'UC se libère.The session's task is waiting for a spinlock to become free.

suspendu.suspended. La session attend la fin d'un événement, tel qu'une E/S.The session is waiting for an event, such as I/O, to complete.
loginameloginame nchar(128)nchar(128) Nom de connexion associé à ce processus particulierLogin name associated with the particular process.
hostnamehostname nchar(128)nchar(128) Nom de l'hôte ou de l'ordinateur pour chaque processusHost or computer name for each process.
blkblk Char (5)char(5) ID de session du processus bloquant, s'il en existe un.Session ID for the blocking process, if one exists. Dans les autres cas, cette colonne a la valeur NULL.Otherwise, this column is zero.

Lorsqu'une transaction associée à un ID de session spécifié est bloquée par une transaction distribuée orpheline, cette colonne renvoie la valeur « -2 » pour la transaction orpheline qui bloque.When a transaction associated with a specified session ID is blocked by an orphaned distributed transaction, this column will return a '-2' for the blocking orphaned transaction.
@dbname nchar(128)nchar(128) Base de données dont se sert le processusDatabase used by the process.
cmdcmd nchar(16)nchar(16) Moteur de base de donnéesDatabase Engine commande ( Transact-SQLTransact-SQL instruction, Moteur de base de donnéesDatabase Engine processus interne, etc.) en cours d’exécution pour le processus.command (Transact-SQLTransact-SQL statement, internal Moteur de base de donnéesDatabase Engine process, and so on) executing for the process. Dans SQL Server 2019, le type de données a changé en nchar (26).In SQL Server 2019, the data type has changed to nchar(26).
request_idrequest_id intint ID des demandes s'exécutant dans une session spécifiqueID for requests running in a specific session.

En cas de traitement parallèle, des sous-threads sont créés pour l'lD de session spécifique.In case of parallel processing, subthreads are created for the specific session ID. Le thread principal est indiqué sous la forme spid = <xxx> et ecid =0.The main thread is indicated as spid = <xxx> and ecid =0. Les autres sous-threads ont le même spid = <xxx> , mais avec ECID > 0.The other subthreads have the same spid = <xxx>, but with ecid > 0.

NotesRemarks

Un processus bloquant, qui peut disposer d'un verrou exclusif, est un processus qui conserve les ressources dont un autre processus a besoin.A blocking process, which may have an exclusive lock, is one that is holding resources that another process needs.

Toutes les transactions distribuées orphelines reçoivent la valeur d'ID de session « -2 ».All orphaned distributed transactions are assigned the session ID value of '-2'. Les transactions distribuées orphelines sont des transactions distribuées qui ne sont associées à aucun ID de session.Orphaned distributed transactions are distributed transactions that are not associated with any session ID. Pour plus d’informations, consultez Utiliser les transactions marquées pour récupérer des bases de données associées uniformément (mode de récupération complète).For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

Interrogez la colonne is_user_process de sys.dm_exec_sessions pour séparer les processus système des processus utilisateur.Query the is_user_process column of sys.dm_exec_sessions to separate system processes from user processes.

AutorisationsPermissions

Nécessite l'autorisation VIEW SERVER STATE sur le serveur pour voir toutes les sessions en cours d'exécution dans l'instance de SQL ServerSQL Server.Requires VIEW SERVER STATE permission on the server to see all executing sessions on the instance of SQL ServerSQL Server. Dans le cas contraire, l'utilisateur ne voit que la session en cours.Otherwise, the user sees only the current session.

ExemplesExamples

R.A. Affichage de tous les processus en coursListing all current processes

L'exemple suivant utilise sp_who sans paramètres pour donner la liste de tous les utilisateurs actuels.The following example uses sp_who without parameters to report all current users.

USE master;  
GO  
EXEC sp_who;  
GO  

B.B. Affichage des processus d'un utilisateur spécifiqueListing a specific user's process

L'exemple suivant montre comment afficher des informations sur un utilisateur actuel par nom de connexion.The following example shows how to view information about a single current user by login name.

USE master;  
GO  
EXEC sp_who 'janetl';  
GO  

C.C. Affichage de tous les processus actifsDisplaying all active processes

USE master;  
GO  
EXEC sp_who 'active';  
GO  

D.D. Affichage d'un processus spécifique identifié par un ID de sessionDisplaying a specific process identified by a session ID

USE master;  
GO  
EXEC sp_who '10' --specifies the process_id;  
GO  

Voir aussiSee Also

sp_lock (Transact-SQL) sp_lock (Transact-SQL)
Processus desys.sys()Transact-SQL sys.sysprocesses (Transact-SQL)
Procédures stockées système (Transact-SQL)System Stored Procedures (Transact-SQL)