Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server
Proporciona información sobre los usuarios, sesiones y procesos actuales en una instancia del Motor de base de datos de SQL Server. La información se puede filtrar para devolver solo los procesos que no están inactivos, que pertenecen a un usuario específico o que pertenecen a una sesión específica.
Convenciones de sintaxis de Transact-SQL
sp_who [ [ @loginame = ] { 'login' | *session_id* | 'ACTIVE' } ]
[ ; ]
Se usa para filtrar el conjunto de resultados.
login es sysname que identifica los procesos que pertenecen a un inicio de sesión determinado.
session_id es un número de identificación de sesión que pertenece a la instancia de SQL Server. session_id es smallint.
ACTIVE
excluye las sesiones que están esperando el siguiente comando del usuario.
Si no se indica ningún valor, el procedimiento muestra todas las sesiones que pertenecen a la instancia.
0
(correcto) o 1
(erróneo).
sp_who
devuelve un conjunto de resultados con la siguiente información.
Columna | Tipo de datos | Descripción |
---|---|---|
spid |
smallint | Id. sesión. |
ecid |
smallint | Id. de contexto de ejecución de un subproceso determinado, asociado con un Id. de sesión específico. ECID = { 0, 1, 2, 3, ...n }, donde 0 representa siempre el subproceso principal o primario, y { 1, 2, 3, ...n } representa los subprocesos. |
status |
nchar(30) | Estado del proceso. Los valores posibles son: - dormant . SQL Server está restableciendo la sesión.- running . La sesión está ejecutando uno o varios lotes. Si Conjuntos de resultados activos múltiples (MARS) está habilitado, una sesión puede ejecutar varios lotes. Para obtener más información, vea Utilizar conjuntos de resultados activos múltiples (MARS).- background . La sesión está ejecutando una tarea en segundo plano, como una detección de interbloqueos.- rollback . La sesión está realizando una reversión de una transacción.- pending . La sesión está esperando que un subproceso de trabajo esté disponible.- runnable . La tarea de la sesión está en la cola de ejecutables de un programador mientras espera obtener un cuanto de tiempo.- spinloop . La tarea de la sesión está esperando que se libere un bloqueo por bucle.- suspended . La sesión está esperando a que finalice un evento, como una entrada o salida. |
loginame |
nchar(128) | Nombre de inicio de sesión asociado al proceso específico. |
hostname |
nchar(128) | Nombre del host o equipo de cada proceso. |
blk |
char(5) | Id. de sesión del proceso de bloqueo, si existe. De lo contrario, esta columna es 0 .Cuando una transacción asociada a un identificador de sesión especificado está bloqueada por una transacción distribuida huérfana, esta columna devuelve un -2 para la transacción huérfana de bloqueo. |
dbname |
nchar(128) | Base de datos usada por el proceso. |
cmd |
nchar(16) | Motor de base de datos comando (instrucción Transact-SQL, proceso de Motor de base de datos interno, etc.) que se ejecuta para el proceso. En SQL Server 2019 (15.x) y versiones posteriores, el tipo de datos es nchar(26). |
request_id |
int | Id. de las solicitudes que se ejecutan en una sesión específica. |
Con el procesamiento paralelo, se crean subprocesos para el identificador de sesión específico. El subproceso principal se indica como spid = <xxx>
y ecid = 0
. Los otros subprocesos tienen el mismo spid = <xxx>
, pero con ecid > 0
.
Un proceso de bloqueo, que podría tener un bloqueo exclusivo, es uno que contiene recursos que necesita otro proceso.
A todas las transacciones distribuidas huérfanas se les asigna el valor de identificador de sesión de -2
. Las transacciones distribuidas huérfanas son transacciones distribuidas que no están asociadas a ningún identificador de sesión. Para obtener más información, consulte Uso de transacciones marcadas para recuperar bases de datos relacionadas de forma coherente.
Consulte la columna de sys.dm_exec_sessions
para separar los is_user_process
procesos del sistema de los procesos de usuario.
Requiere el permiso VIEW SERVER STATE en el servidor para ver todas las sesiones en ejecución en la instancia de SQL Server. De lo contrario, el usuario solo ve la sesión actual.
En el ejemplo siguiente se utiliza sp_who
sin parámetros para informar de todos los usuarios actuales.
USE master;
GO
EXEC sp_who;
GO
En el ejemplo siguiente se muestra cómo ver información acerca de un usuario actual a partir de su nombre de inicio de sesión.
USE master;
GO
EXEC sp_who 'janetl';
GO
USE master;
GO
EXEC sp_who 'active';
GO
USE master;
GO
EXEC sp_who '10' --specifies the process_id;
GO
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoy