Compartir a través de


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 acerca de todas las conexiones de usuario activas y las tareas internas. 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 sesión actual, etc. Use sys.dm_exec_sessions para ver en primer lugar la carga del sistema actual e identificar una sesión que le interese y, a continuación, obtenga más información acerca de esa sesión usando 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. Acepta valores NULL.

Nota de seguridadNota de seguridad

La aplicación cliente proporciona el nombre de la estación de trabajo y puede proporcionar datos inexactos. No confíe en HOST_NAME como característica de seguridad.

program_name

nvarchar(128)

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

host_process_id

int

Identificador de proceso del programa cliente que inició la sesión. El valor es NULL para las sesiones internas. Acepta 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. Acepta valores NULL.

client_interface_name

nvarchar(32)

Nombre del protocolo utilizado por el cliente para conectarse al servidor. El valor es NULL para las sesiones internas. Acepta valores NULL.

security_id

varbinary(85)

Identificador 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 conocer el nombre de inicio de sesión original que creó 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 los usuarios que no son del dominio. Acepta 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 los usuarios que no son del dominio. Acepta 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 del regulador 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 utilizando la instrucción SET CONTEXT_INFO. Acepta 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 transcurrido, en milisegundos, desde que se estableció la sesión. No acepta valores NULL.

endpoint_id

int

Identificador 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 se realizó por última vez una solicitud de la sesión. Acepta 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. Acepta valores NULL.

date_format

nvarchar(3)

Valor de DATEFORMAT para la sesión. Acepta 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

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

original_security_id

varbinary(85)

Identificador de seguridad de Microsoft Windows asociado a 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, un nombre de usuario de dominio autenticado en Windows o un usuario de base de datos independiente. 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.

database_id

smallint

Identificador de la base de datos actual para cada sesión.

authenticating_database_id

int

Identificador de la base de datos que autentica la entidad de seguridad. Para los inicios de sesión, el valor será 0. Para los usuarios de base de datos independiente, el valor será el identificador de base de datos de la base de datos independiente.

open_transaction_count

int

Número de transacciones abiertas por sesión.

Permisos

Necesita el permiso VIEW SERVER STATE en el servidor.

[!NOTA]

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

Comentarios

Cuando se habilita la opción common criteria compliance enabled de configuración del servidor, las estadísticas de inicio de sesión se muestran en las siguientes columnas.

  • last_successful_logon

  • last_unsuccessful_logon

  • unsuccessful_logons

Si esta opción no está habilitada, estas columnas devuelven valores NULL. Para obtener más información acerca de cómo establecer esta opción de configuración del servidor, vea common criteria compliance enabled (opción de configuración del servidor).

Cardinalidades de relación

De

A

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 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 aquélla 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
    );

D.Buscar información sobre una conexión solo para consultas

Consulta típica para recopilar información sobre una conexión solo para consultas.

SELECT 
    c.session_id, c.net_transport, c.encrypt_option, 
    c.auth_scheme, s.host_name, s.program_name, 
    s.client_interface_name, s.login_name, s.nt_domain, 
    s.nt_user_name, s.original_login_name, c.connect_time, 
    s.login_time 
FROM sys.dm_exec_connections AS c
JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;

Vea también

Referencia

Funciones y vistas de administración dinámica (Transact-SQL)

Funciones y vistas de administración dinámica relacionadas con ejecuciones (Transact-SQL)