sys.dm_exec_sessions (Transact-SQL)
Se aplica a: punto de conexión de SQL Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics System (PDW) de SQL Server en Microsoft Fabric Warehouse en Microsoft Fabric
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 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 obtener después más información acerca de esa sesión mediante 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 vista de compatibilidad del sistema sys.sysprocesses.
Nota:
Para llamarlo desde un grupo de SQL dedicado de Azure Synapse Analytics o Analytics Platform System (PDW), consulte sys.dm_pdw_nodes_exec_sessions. Para el grupo de SQL sin servidor o Microsoft Fabric, use sys.dm_exec_sessions
.
Nombre de la columna | Tipo de datos | Descripción e información específica de la versió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. Las sesiones que no han completado el inicio de sesión, en el momento en que se consulta esta DMV, aparecen con una hora de inicio de sesión de 1900-01-01 . |
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 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 de la biblioteca o controlador que usa el cliente para comunicarse con el 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 obtener el nombre de inicio de sesión original que creó la sesión, consulte 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) | Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores 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) | Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores 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 mediante 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. |
Lecturas | bigint | Número de lecturas realizadas, por solicitudes de esta sesión, durante esta sesión. No acepta valores NULL. |
Escrituras | 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, por solicitudes de esta sesión, durante esta 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 = ReadUncommitted 2 = ReadCommitted 3 = RepeatableRead 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. 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 | Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores Hora del último inicio de sesión correcto para original_login_name con anterioridad al inicio de sesión actual. |
last_unsuccessful_logon | datetime | Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores 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 | Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores Número de intentos de inicio de sesión incorrectos para entre original_login_name y last_successful_logon 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 | Se aplica a: SQL Server 2012 (11.x) y versiones posteriores. Identificador de la base de datos actual para cada sesión. En Azure SQL Database, los valores son únicos dentro de una base de datos única o un grupo elástico, pero no dentro de un servidor lógico. |
authenticating_database_id | int | Se aplica a: SQL Server 2012 (11.x) y versiones posteriores. Identificador de la base de datos que autentica la entidad de seguridad. En el caso de 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 | Se aplica a: SQL Server 2012 (11.x) y versiones posteriores. Número de transacciones abiertas por sesión. |
pdw_node_id | int | Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW) Identificador del nodo en el que se encuentra esta distribución. |
page_server_reads | bigint | Se aplica a: Hiperescala de Azure SQL Database Número de lecturas del servidor de páginas realizadas, por solicitudes de esta sesión, durante esta sesión. No acepta valores NULL. |
Permisos
Todos pueden ver su propia información de sesión.
SQL Server: requiere el permiso VIEW SERVER STATE
en SQL Server para ver todas las sesiones en el servidor.
SQL Database: requiere VIEW DATABASE STATE
para ver todas las conexiones a la base de datos actual. VIEW DATABASE STATE
no se puede conceder en la base de datos master
.
Permisos para SQL Server 2022 y versiones posteriores
Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.
Observaciones
Cuando se habilita la opción Compatibilidad con criterio común habilitada de configuración del servidor, las estadísticas de inicio de sesión aparecen 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 más información sobre cómo establecer esta opción de configuración del servidor, consulte la opción de configuración del servidor Compatibilidad con criterio común habilitada.
Las conexiones de administrador en Azure SQL Database ven una fila por sesión autenticada. Las sesiones "sa" que aparecen en el conjunto de resultados no tienen ningún efecto en la cuota de usuario para las sesiones. Las conexiones que no son de administrador solo verán información relacionada con sus sesiones de usuario de base de datos.
Debido a las diferencias en cómo se registran, open_transaction_count
puede que no coincida con sys.dm_tran_session_transactions
.open_transaction_count
.
Cardinalidades de relación
De | En | On/Apply | 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. Búsqueda de 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. Búsqueda de 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
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;
GO
C. Búsqueda de 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. Búsqueda de información sobre una conexión propietaria de consultas
En el ejemplo siguiente se recopila información sobre la propia conexión de una consulta:
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
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de