sp_who (Transact-SQL)sp_who (Transact-SQL)
S’applique à :Applies to: SQL ServerSQL Server (toutes les versions prises en charge)
SQL ServerSQL Server (all supported versions) S’applique à :Applies to:
SQL ServerSQL Server (toutes les versions prises en charge)
SQL 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.
Conventions de la syntaxe Transact-SQL
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)