sp_who (Transact-SQL)
Mis à jour : 14 avril 2006
Fournit des informations sur les sessions, les utilisateurs et les processus actifs dans une instance du moteur de base de données SQL Server de Microsoft. 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.
Conventions de la syntaxe de Transact-SQL
Syntaxe
sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]
Arguments
[ @loginame = ] 'login' | session ID | 'ACTIVE'
Permet de filtrer l'ensemble de résultats.Le paramètre login, de type sysname, identifie les processus appartenant à une connexion spécifique.
session ID (SPID dans SQL Server 2000 et versions antérieures) est un numéro d'identification de session appartenant à l'instance SQL Server. session ID est de type smallint.
ACTIVE exclut les sessions en attente de la prochaine commande de l'utilisateur.
Si aucune valeur n'est fournie, la procédure répertorie toutes les sessions appartenant à l'instance.
Jeux de résultats
sp_who retourne un jeu de résultats comportant les informations suivantes.
Colonne | Type de données | Description |
---|---|---|
spid |
smallint |
ID de la session. |
ecid |
smallint |
ID du contexte d'exécution d'un thread donné associé à un ID de session spécifique. ECID = {0, 1, 2, 3, ...n}, où 0 représente toujours le thread principal ou parent et {1, 2, 3, ...n} les sous-threads. |
status |
nchar(30) |
État du processus Les valeurs possibles sont les suivantes : dormant. SQL Server réinitialise la session. en cours d'exécution. La session exécute un ou plusieurs lots. Lorsque la fonctionnalité MARS (Multiple Active Result Sets) est activée, une session peut exécuter plusieurs lots. Pour plus d'informations, consultez Using Multiple Active Result Sets (MARS). arrière-plan. La session exécute une tâche en arrière-plan, telle qu'une détection de blocage. annulation. Un processus d'annulation est en cours dans la session. en attente. La session attend qu'un thread de travail soit disponible. exécutable. 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. spinloop. La tâche de la session attend qu'un verrouillage total de l'UC se libère. suspended. La session attend la fin d'un événement, tel qu'une E/S. |
loginame |
nchar(128) |
Nom de connexion associé à ce processus particulier |
hostname |
nchar(128) |
Nom de l'hôte ou de l'ordinateur pour chaque processus |
blk |
char(5) |
ID de session du processus bloquant, s'il en existe un. Dans les autres cas, cette colonne a la valeur NULL. 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. |
dbname |
nchar(128) |
Base de données dont se sert le processus |
cmd |
nchar(16) |
Commande du moteur de base de données SQL Server (instruction Transact-SQL, processus du moteur de base de données SQL Server interne, etc.) s'exécutant pour le processus. |
request_id |
int |
ID des demandes s'exécutant dans une session spécifique |
En cas de traitement parallèle, des sous-threads sont créés pour l'lD de session spécifique. Le thread principal est indiqué sous la forme spid = <xxx>
et ecid =0
. Les autres sous-threads ont le même spid = <xxx>
, mais avec ecid > 0.
Notes
Un processus bloquant, qui peut disposer d'un verrou exclusif, est un processus qui conserve les ressources dont un autre processus a besoin.
Dans SQL Server 2000 et version ultérieure, toutes les transactions distribuées orphelines reçoivent la valeur d'ID de session « -2 ». Les transactions distribuées orphelines sont des transactions distribuées qui ne sont associées à aucun ID de session. Pour plus d'informations, consultez Utilisation des transactions marquées (mode de sauvegarde complète).
SQL Server 2000 et les versions ultérieures réservent les valeurs d'ID de session comprises entre 1 et 50 à un usage interne et utilisent les valeurs d'ID de session supérieures ou égales à 51 pour représenter les sessions utilisateur.
Autorisations
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 Server. Dans le cas contraire, l'utilisateur ne voit que la session en cours.
Retourne les valeurs du code
0 (succès) ou 1 (échec)
Exemples
A. Affichage de tous les processus en cours
L'exemple suivant utilise sp_who
sans paramètres pour donner la liste de tous les utilisateurs actuels.
USE master;
GO
EXEC sp_who;
GO
B. Affichage des processus d'un utilisateur spécifique
L'exemple suivant montre comment afficher des informations sur un utilisateur actuel par nom de connexion.
USE master;
GO
EXEC sp_who 'janetl';
GO
C. Affichage de tous les processus actifs
USE master;
GO
EXEC sp_who 'active';
GO
D. Affichage d'un processus spécifique identifié par un ID de session
USE master;
GO
EXEC sp_who '10' --specifies the process_id;
GO
Voir aussi
Référence
sp_lock (Transact-SQL)
sys.sysprocesses (Transact-SQL)
Procédures stockées système (Transact-SQL)
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version
Historique
14 avril 2006
Terme
Définition
**Contenu modifié :**Remplacement des références au SPID par ID de session.
5 décembre 2005
Terme
Définition
**Contenu modifié :**Les définitions de la colonne status ont été développées.