sys.dm_exec_requests (Transact-SQL)

 

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síBase de datos SQL de AzuresíAlmacenamiento de datos SQL de Azure síAlmacenamiento de datos paralelos

Devuelve información acerca de cada solicitud que se está ejecutando en SQL Server.

System_CAPS_ICON_note.jpg Nota


Para ejecutar código situado fuera de SQL Server (por ejemplo, en procedimientos almacenados extendidos y consultas distribuidas), se tiene que ejecutar un subproceso fuera del control del programador no preferente. Para hacerlo, un trabajador se cambia al modo preferente. Los valores de tiempo que devuelve esta vista de administración dinámica no incluyen el tiempo transcurrido en modo preferente.

System_CAPS_ICON_note.jpg Nota


Para llamar a esta desde Almacenamiento de datos SQL de Azure o Almacenamiento de datos paralelos, use el nombre sys.dm_pdw_nodes_exec_requests.

Nombre de columnaTipo de datosDescription
session_idsmallintIdentificador de la sesión con la que está relacionada esta solicitud. No admite valores NULL.
request_idintIdentificador de la solicitud. Es único en el contexto de la sesión. No admite valores NULL.
start_timefecha y horaMarca de tiempo de la llegada de la solicitud. No admite valores NULL.
statusnvarchar (30)Estado de la solicitud. Puede ser uno de los siguientes:

Información previa
En ejecución
Ejecutable
En espera
Suspendida

No admite valores NULL.
comandonvarchar (32)Identifica el tipo de comando actual que se está procesando. Los tipos de comandos comunes incluyen lo siguiente:

SELECT
INSERT
UPDATE
DELETE
BACKUP LOG
BACKUP DATABASE
DBCC
FOR

El texto de la solicitud se puede recuperar mediante sys.dm_exec_sql_text con el correspondiente sql_handle para la solicitud. Los procesos internos del sistema establecen el comando según el tipo de tarea que realizan. Las tareas pueden incluir las siguientes:

LOCK MONITOR
CHECKPOINTLAZY
WRITER

No admite valores NULL.
sql_handlevarbinary(64)Asignación hash del texto SQL de la solicitud. Acepta valores NULL.
statement_start_offsetintNúmero de caracteres en el lote que se está ejecutando actualmente o procedimiento almacenado en el que se inicia la instrucción que se está ejecutando actualmente. Se puede utilizar junto con la función de administración dinámica sql_handle, statement_end_offset y sys.dm_exec_sql_text para recuperar la instrucción de ejecución actual para la solicitud. Acepta valores NULL.
statement_end_offsetintNúmero de caracteres en el lote que se está ejecutando actualmente o procedimiento almacenado en el que finaliza la instrucción que se está ejecutando actualmente. Se puede utilizar junto con la función de administración dinámica sql_handle, statement_end_offset y sys.dm_exec_sql_text para recuperar la instrucción de ejecución actual para la solicitud. Acepta valores NULL.
plan_handlevarbinary(64)Asignación hash del plan para la ejecución SQL. Acepta valores NULL.
database_idsmallintIdentificador de la base de datos en la que se ejecuta la solicitud. No admite valores NULL.
user_idintIdentificador del usuario que envió la solicitud. No admite valores NULL.
connection_iduniqueidentifierIdentificador de la conexión a la que ha llegado la solicitud. Acepta valores NULL.
blocking_session_idsmallintId. de la sesión que bloquea la solicitud. Si esta columna es NULL, la solicitud no está bloqueada o la información de la sesión de bloqueo no está disponible (o no puede ser identificada).

-2 = El recurso de bloqueo es propiedad de una transacción distribuida huérfana.

-3 = El recurso de bloqueo es propiedad de una transacción de recuperación diferida.

-4 = No se pudo determinar el identificador de sesión del propietario del bloqueo temporal a causa de transiciones internas de estado de dicho bloqueo.
wait_typenvarchar (60)Si la solicitud está actualmente bloqueada, esta columna devuelve el tipo de espera. Acepta valores NULL.

Para obtener información acerca de los tipos de esperas, vea sys.dm_os_wait_stats (Transact-SQL).
wait_timeintSi la solicitud está actualmente bloqueada, esta columna devuelve la duración en milisegundos de la espera actual. No admite valores NULL.
last_wait_typenvarchar (60)Si esta solicitud se ha bloqueado anteriormente, esta columna devuelve el tipo de la última espera. No admite valores NULL.
wait_resourcenvarchar (256)Si la solicitud está actualmente bloqueada, esta columna devuelve el recurso por el que está esperando la solicitud actualmente. No admite valores NULL.
open_transaction_countintNúmero de transacciones abiertas para esta solicitud. No admite valores NULL.
open_resultset_countintNúmero de conjuntos de resultados abiertos para esta solicitud. No admite valores NULL.
transaction_idbigintIdentificador de la transacción donde se ejecuta esta solicitud. No admite valores NULL.
context_infovarbinary (128)Valor CONTEXT_INFO de la sesión. Acepta valores NULL.
percent_completerealPorcentaje de trabajo completado en los siguientes comandos:

ALTER INDEX REORGANIZE
Opción AUTO_SHRINK con ALTER DATABASE
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE ENCRYPTION

No admite valores NULL.
estimated_completion_timebigintSolo interno. No admite valores NULL.
cpu_timeintTiempo de CPU en milisegundos utilizado por la solicitud. No admite valores NULL.
total_elapsed_timeintTiempo total transcurrido en milisegundos desde que llegó la solicitud. No admite valores NULL.
scheduler_idintIdentificador del programador que programa esta solicitud. No admite valores NULL.
task_addressvarbinary (8)Dirección de memoria asignada a la tarea asociada con esta solicitud. Acepta valores NULL.
readsbigintNúmero de lecturas realizadas por esta solicitud. No admite valores NULL.
writesbigintNúmero de escrituras realizadas por esta solicitud. No admite valores NULL.
logical_readsbigintNúmero de lecturas lógicas realizadas por la solicitud. No admite valores NULL.
text_sizeintValor de TEXTSIZE para esta solicitud. No admite valores NULL.
languagenvarchar (128)Configuración de idioma para esta solicitud. Acepta valores NULL.
date_formatnvarchar(3)Valor de DATEFORMAT para esta solicitud. Acepta valores NULL.
date_firstsmallintValor de DATEFIRST para esta solicitud. No admite valores NULL.
quoted_identifierbits1 = El valor de QUOTED_IDENTIFIER es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
arithabortbits1 = El valor de ARITHABORT es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
ansi_null_dflt_onbits1 = El valor de ANSI_NULL_DFLT_ON es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
ansi_defaultsbits1 = El valor de ANSI_DEFAULTS es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
ansi_warningsbits1 = El valor de ANSI_WARNINGS es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
ansi_paddingbits1 = El valor de ANSI_PADDING es ON para la solicitud.

De lo contrario, es 0.

No admite valores NULL.
ansi_nullsbits1 = El valor de ANSI_NULLS es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
concat_null_yields_nullbits1 = El valor de CONCAT_NULL_YIELDS_NULL es ON para la solicitud. De lo contrario, es 0.

No admite valores NULL.
transaction_isolation_levelsmallintNivel de aislamiento con el que se creó la transacción para esta solicitud. No admite valores NULL.

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Snapshot
lock_timeoutintTiempo de espera de bloqueo en milisegundos para esta solicitud. No admite valores NULL.
deadlock_priorityintValor de DEADLOCK_PRIORITY para la solicitud. No admite valores NULL.
row_countbigintNúmero de filas que esta solicitud ha devuelto al cliente. No admite valores NULL.
prev_errorintÚltimo error que se ha producido durante la ejecución de la solicitud. No admite valores NULL.
nest_levelintNivel de anidamiento actual del código que se está ejecutando en la solicitud. No admite valores NULL.
granted_query_memoryintNúmero de páginas asignadas a la ejecución de una consulta en la solicitud. No admite valores NULL.
executing_managed_codebitsIndica si una solicitud concreta está ejecutando actualmente objetos Common Language Runtime, como rutinas, tipos y desencadenadores. Se establece para todo el tiempo que un objeto Common Language Runtime esté en la pila, incluso mientras se ejecuta Transact-SQL desde Common Language Runtime. No admite valores NULL.
group_idintIdentificador del grupo de cargas de trabajo al que pertenece esta consulta. No admite valores NULL.
query_hashbinary (8)Valor hash binario que se calcula en la consulta y que se usa para identificar consultas con una lógica similar. Puede usar el hash de consulta para determinar el uso de recursos agregados para las consultas que solo se diferencian en los valores literales.
query_plan_hashbinary (8)Valor hash binario que se calcula en el plan de ejecución de consulta y que se usa para identificar planes de ejecución de consulta similares. Puede usar el hash del plan de consulta para buscar el costo acumulativo de las consultas con planes de ejecución similares.
statement_sql_handlevarbinary(64)Se aplica a: desde SQL Server 2014 hasta SQL Server 2016.

Reservado para uso futuro.
statement_context_idbigintSe aplica a: desde SQL Server 2014 hasta SQL Server 2016.

Reservado para uso futuro.
pdw_node_idintSe aplica a: Almacenamiento de datos SQL de Azure,Almacenamiento de datos paralelos

El identificador para el nodo que se encuentra en esta distribución.

Si el usuario tiene VIEW SERVER STATE permiso en el servidor, el usuario verá las sesiones en ejecución todo en la instancia de SQL Server; de lo contrario, el usuario verá solo la sesión actual. VIEW SERVER STATEno se puede conceder en Base de datos SQL para sys.dm_exec_requests siempre está limitado a la conexión actual.

A. Buscar el texto de consulta para un lote en ejecución

En el siguiente ejemplo se consulta sys.dm_exec_requests para buscar la consulta de interés y copiar su sql_handle desde la salida.

SELECT * FROM sys.dm_exec_requests;  
GO  

Después, para obtener el texto de la instrucción, use el sql_handle copiado con la función del sistema sys.dm_exec_sql_text(sql_handle).

SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);  
GO  

B. Buscar todos los bloqueos que mantiene un lote en ejecución

El siguiente ejemplo se consulta sys.dm_exec_requests para encontrar el lote de interés y copiar su transaction_id desde la salida.

SELECT * FROM sys.dm_exec_requests;  
GO  

A continuación, para buscar información de bloqueo, use copiado transaction_id con la función de sistema sys.dm_tran_locks.

SELECT * FROM sys.dm_tran_locks   
WHERE request_owner_type = N'TRANSACTION'   
    AND request_owner_id = < copied transaction_id >;  
GO  

C. Buscar todas las solicitudes bloqueadas actualmente

El siguiente ejemplo se consulta sys.dm_exec_requests para buscar información sobre las solicitudes bloqueadas.

SELECT session_id ,status ,blocking_session_id  
    ,wait_type ,wait_time ,wait_resource   
    ,transaction_id   
FROM sys.dm_exec_requests   
WHERE status = N'suspended';  
GO  

Vistas de administración dinámica y funciones (Transact-SQL)
Vistas de administración dinámica y funciones (Transact-SQL) relacionadas con ejecuciones
Sys.dm_os_memory_clerks (Transact-SQL)
Sys.dm_os_sys_info (Transact-SQL)
Sys.dm_exec_query_memory_grants (Transact-SQL)
Sys.dm_exec_query_plan (Transact-SQL)
Sys.dm_exec_sql_text (Transact-SQL)

Adiciones de comunidad

AGREGAR
Mostrar: