sys.dm_exec_sessions (Transact-SQL)

Devuelve una fila por cada sesión autenticada en SQL Server. sys.dm_exec_sessions es una vista de ámbito de servidor que muestra información sobre todas las tareas internas y conexiones de usuario activas. Esta información incluye la versión del cliente, el nombre del programa cliente, la hora de inicio de sesión del cliente, el usuario de inicio de sesión, la configuración de la sesión actual, etcétera. Use sys.dm_exec_sessions para ver, primero, la carga del sistema actual e identificar una sesión de interés y, después, obtener más información acerca de esa sesión con otras vistas o funciones de administración dinámica.

Las vistas de administración dinámica sys.dm_exec_connections, sys.dm_exec_sessions y sys.dm_exec_requests se asignan a la tabla del sistema sys.sysprocesses.

Nombre de columna

Tipo de datos

Descripción

session_id

smallint

Identifica la sesión asociada a cada conexión principal activa. No acepta valores NULL.

login_time

datetime

Hora en que se estableció la sesión. No acepta valores NULL.

host_name

nvarchar(128)

Nombre de la estación de trabajo cliente específica de una sesión. El valor es NULL para las sesiones internas. Admite valores NULL.

program_name

nvarchar(128)

Nombre del programa cliente que inició la sesión. El valor es NULL para las sesiones internas. Admite valores NULL.

host_process_id

int

Id. de proceso del programa cliente que inició la sesión. El valor es NULL para las sesiones internas. Admite valores NULL.

client_version

int

Versión del protocolo TDS de la interfaz utilizada por el cliente para conectarse al servidor. El valor es NULL para las sesiones internas. Admite valores NULL.

ValorVersión de TDS Versión de SQL Server
04.2SQL Server 6.x
16.0SQL Server 6.x
27.0SQL Server 7.0
37.1SQL Server 2000
47.1 Revisión 1SQL Server 2000 con Service Pack 1
57.2SQL Server 2005
67.3SQL Server 2008

client_interface_name

nvarchar(32)

Nombre del protocolo que usa el cliente para conectarse al servidor. El valor es NULL para las sesiones internas. Admite valores NULL.

security_id

varbinary(85)

Id. de seguridad de Microsoft Windows asociado al inicio de sesión. No acepta valores NULL.

login_name

nvarchar(128)

Nombre de inicio de sesión de SQL Server en el que se está ejecutando la sesión. Para saber qué nombre de inicio de sesión original ha creado la sesión, vea original_login_name. Puede ser un nombre de inicio de sesión autenticado en SQL Server o un nombre de usuario de dominio autenticado en Windows. No acepta valores NULL.

nt_domain

nvarchar(128)

Dominio de Windows para el cliente si la sesión utiliza la autenticación de Windows o una conexión de confianza. Este valor es NULL para las sesiones internas y usuarios que no son del dominio. Admite valores NULL.

nt_user_name

nvarchar(128)

Nombre de usuario de Windows para el cliente si la sesión utiliza la autenticación de Windows o una conexión de confianza. Este valor es NULL para las sesiones internas y usuarios que no son del dominio. Admite valores NULL.

status

nvarchar(30)

Estado de la sesión. Valores posibles:

  • Running: está ejecutando una o varias solicitudes actualmente

  • Sleeping: no está ejecutando solicitudes actualmente

  • Dormant: la sesión se ha restablecido debido a que la agrupación de conexiones está ahora en estado previo al inicio de sesión.

  • Preconnect: la sesión está en el clasificador de reguladores de recursos.

No acepta valores NULL.

context_info

varbinary(128)

Valor CONTEXT_INFO para la sesión. El usuario establece la información de contexto con la instrucción SET CONTEXT_INFO. Admite valores NULL.

cpu_time

int

Tiempo de CPU, en milisegundos, utilizado por esta sesión. No acepta valores NULL.

memory_usage

int

Número de páginas de memoria de 8 KB utilizadas por esta sesión. No acepta valores NULL.

total_scheduled_time

int

Tiempo total, en milisegundos, para el que se programó la ejecución de la sesión (sus solicitudes). No acepta valores NULL.

total_elapsed_time

int

Tiempo que ha transcurrido, en milisegundos, desde que se estableció la sesión. No acepta valores NULL.

endpoint_id

int

Id. del extremo asociado a la sesión. No acepta valores NULL.

last_request_start_time

datetime

Hora a la que comenzó la última solicitud de la sesión. Se incluye la solicitud que se ejecuta actualmente. No acepta valores NULL.

last_request_end_time

datetime

Hora a la que finalizó la última solicitud de la sesión. Admite valores NULL.

reads

bigint

Número de lecturas realizadas, por solicitudes de esta sesión, durante esta sesión. No acepta valores NULL.

writes

bigint

Número de escrituras realizadas, por solicitudes de esta sesión, durante esta sesión. No acepta valores NULL.

logical_reads

bigint

Número de lecturas lógicas realizadas en la sesión. No acepta valores NULL.

is_user_process

bit

0 si es una sesión de sistema; De lo contrario, es 1. No acepta valores NULL.

text_size

int

Valor de TEXTSIZE para la sesión. No acepta valores NULL.

language

nvarchar(128)

Valor de LANGUAGE para la sesión. Admite valores NULL.

date_format

nvarchar(3)

Valor de DATEFORMAT para la sesión. Admite valores NULL.

date_first

smallint

Valor de DATEFIRST para la sesión. No acepta valores NULL.

quoted_identifier

bit

Valor de QUOTED_IDENTIFIER para la sesión. No acepta valores NULL.

arithabort

bit

Valor de ARITHABORT para la sesión. No acepta valores NULL.

ansi_null_dflt_on

bit

Valor de ANSI_NULL_DFLT_ON para la sesión. No acepta valores NULL.

ansi_defaults

bit

Valor de ANSI_DEFAULTS para la sesión. No acepta valores NULL.

ansi_warnings

bit

Valor de ANSI_WARNINGS para la sesión. No acepta valores NULL.

ansi_padding

bit

Valor de ANSI_PADDING para la sesión. No acepta valores NULL.

ansi_nulls

bit

Valor de ANSI_NULLS para la sesión. No acepta valores NULL.

concat_null_yields_null

bit

Valor de CONCAT_NULL_YIELDS_NULL para la sesión. No acepta valores NULL.

transaction_isolation_level

smallint

Nivel de aislamiento de transacción de la sesión.

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Snapshot

No acepta valores NULL.

lock_timeout

int

Valor de LOCK_TIMEOUT para la sesión. El valor se expresa en milisegundos. No acepta valores NULL.

deadlock_priority

int

Valor de DEADLOCK_PRIORITY para la sesión. No acepta valores NULL.

row_count

bigint

Número de filas devueltas en la sesión hasta este momento. No acepta valores NULL.

prev_error

int

Id. del último error devuelto en la sesión. No acepta valores NULL.

original_security_id

varbinary(85)

Identificador de seguridad de Microsoft Windows asociado al original_login_name. No acepta valores NULL.

original_login_name

nvarchar(128)

Nombre de inicio de sesión de SQL Server que el cliente usó para crear esta sesión. Puede ser un nombre de inicio de sesión autenticado en SQL Server o un nombre de usuario de dominio autenticado en Windows. Tenga en cuenta que, después de la conexión inicial, la sesión puede haber pasado por muchos cambios de contexto implícitos o explícitos. Por ejemplo, cuando se usa EXECUTE AS. No acepta valores NULL.

last_successful_logon

datetime

Hora del último inicio de sesión correcto para original_login_name con anterioridad al inicio de sesión actual.

last_unsuccessful_logon

datetime

Hora del último intento de inicio de sesión incorrecto para original_login_name con anterioridad al inicio de sesión actual.

unsuccessful_logons

bigint

Número de intentos de inicio de sesión incorrectos para original_login_name entre last_successful_logon y login_time.

group_id

int

Identificador del grupo de cargas de trabajo al que pertenece esta sesión. No acepta valores NULL.

Permisos

Requiere el permiso VIEW SERVER STATE en el servidor.

[!NOTA]

Si el usuario posee el permiso VIEW SERVER STATE en el servidor, el usuario verá todas las sesiones que se están ejecutando en la instancia de SQL Server; de lo contrario, el usuario sólo verá la sesión actual.

Notas

Estadísticas de inicio de sesión para la compatibilidad con criterio común

Cuando la opción common criteria compliance se habilita mediante el procedimiento almacenado sp_configure, las estadísticas de inicio de sesión se almacenan y muestran en las siguientes columnas de sys.dm_exec_sessions:

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Si la opción de configuración del servidor no está habilitada, estas columnas sys.dm_exec_sessions devolverán valores nulos. Para obtener más información acerca de cómo establecer esta opción de configuración del servidor, vea Opción Compatibilidad con criterio común habilitada.

Cardinalidades de relación

De

Para

Aplicar en

Relación

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Uno a ninguno o uno a varios

sys.dm_exec_sessions

sys.dm_exec_connections

session_id

Uno a ninguno o uno a varios

sys.dm_exec_sessions

sys.dm_tran_session_transactions

session_id

Uno a ninguno o uno a varios

sys.dm_exec_sessions

sys.dm_exec_cursors(session_id | 0)

session_id CROSS APPLY

OUTER APPLY

Uno a ninguno o uno a varios

sys.dm_exec_sessions

sys.dm_db_session_space_usage

session_id

Uno a uno

Ejemplos

A. Buscar los usuarios conectados al servidor

En el ejemplo siguiente se buscan los usuarios que están conectados al servidor y se devuelve el número de sesiones de cada usuario.

SELECT login_name ,COUNT(session_id) AS session_count 
FROM sys.dm_exec_sessions 
GROUP BY login_name;

B. Buscar cursores de ejecución prolongada

En el ejemplo siguiente se buscan los cursores que se han abierto durante más de un período concreto, quién los creó y en qué sesión están.

USE master;
GO
SELECT creation_time ,cursor_id 
    ,name ,c.session_id ,login_name 
FROM sys.dm_exec_cursors(0) AS c 
JOIN sys.dm_exec_sessions AS s 
   ON c.session_id = s.session_id 
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

C. Buscar sesiones inactivas que tienen transacciones abiertas

En el ejemplo siguiente se buscan sesiones que tienen transacciones abiertas y están inactivas. Una sesión inactiva es aquella que no tiene ninguna solicitud en ejecución.

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
    );

Historial de cambios

Contenido actualizado

Se han agregado valores a la columna de descripción de versión de cliente.