sys.dm_exec_requests (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database síAzure Synapse Analytics

Devuelve información sobre cada solicitud que se ejecuta en SQL Server . Para obtener más información sobre las solicitudes, vea la Guía de arquitectura de subprocesos y tareas.

Nota

Para llamar a esto desde un grupo SQL dedicado en o , vea Azure Synapse Analytics Sistema de la plataforma de análisis (PDW) sys.dm_pdw_exec_requests (Transact-SQL). Para el grupo de SQL sin servidor, use sys.dm_exec_requests .

Nombre de la columna Tipo de datos Descripción
session_id smallint Identificador de la sesión con la que está relacionada esta solicitud. No admite valores NULL.
request_id int Id. de la solicitud. Es único en el contexto de la sesión. No admite valores NULL.
start_time datetime Marca de tiempo de la llegada de la solicitud. No admite valores NULL.
status nvarchar(30) Estado de la solicitud. Puede ser uno de los siguientes valores:

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

No admite valores NULL.
command nvarchar(32) Identifica el tipo de comando actual que se está procesando. Los tipos de comandos comunes incluyen los siguientes valores:

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 los siguientes valores:

LOCK MONITOR
CHECKPOINTLAZY
WRITER

No admite valores NULL.
sql_handle varbinary(64) Es un token que identifica de forma única el lote o el procedimiento almacenado del que forma parte la consulta. Acepta valores NULL.
statement_start_offset int Indica, en bytes, a partir de 0, la posición inicial de la instrucción que se está ejecutando actualmente para el lote o el objeto persistente que se está ejecutando actualmente. Se puede usar junto con , y la función de administración dinámica para recuperar la instrucción que se está sql_handle ejecutando actualmente para la statement_end_offset sys.dm_exec_sql_text solicitud. Acepta valores NULL.
statement_end_offset int Indica, en bytes, a partir de 0, la posición final de la instrucción que se está ejecutando actualmente para el lote o el objeto persistente que se está ejecutando actualmente. Se puede usar junto con , y la función de administración dinámica para recuperar la instrucción que se está sql_handle ejecutando actualmente para la statement_start_offset sys.dm_exec_sql_text solicitud. Acepta valores NULL.
plan_handle varbinary(64) Es un token que identifica de forma única un plan de ejecución de consultas para un lote que se está ejecutando actualmente. Acepta valores NULL.
database_id smallint Identificador de la base de datos en la que se ejecuta la solicitud. No admite valores NULL.
user_id int Identificador del usuario que envió la solicitud. No admite valores NULL.
connection_id uniqueidentifier Identificador de la conexión a la que ha llegado la solicitud. Acepta valores NULL.
blocking_session_id smallint Id. de la sesión que bloquea la solicitud. Si esta columna es NULL o igual a 0, la solicitud no se bloquea o la información de sesión de la sesión de bloqueo no está disponible (o no se puede identificar). Para obtener más información, vea Comprender y resolver SQL Server problemas de bloqueo.

-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.

-5 = No se pudo determinar el identificador de sesión del propietario del bloqueo de bloqueos porque no se realiza un seguimiento de este tipo de bloqueo (por ejemplo, para un bloqueo de bloqueo bloqueo).
wait_type nvarchar(60) Si la solicitud está actualmente bloqueada, esta columna devuelve el tipo de espera. Acepta valores NULL.

Para obtener información sobre los tipos de espera, vea sys.dm_os_wait_stats (Transact-SQL).
wait_time int Si la solicitud está actualmente bloqueada, esta columna devuelve la duración en milisegundos de la espera actual. No admite valores NULL.
last_wait_type nvarchar(60) Si esta solicitud se ha bloqueado anteriormente, esta columna devuelve el tipo de la última espera. No admite valores NULL.
wait_resource nvarchar(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_count int Número de transacciones abiertas para esta solicitud. No admite valores NULL.
open_resultset_count int Número de conjuntos de resultados abiertos para esta solicitud. No admite valores NULL.
transaction_id bigint Identificador de la transacción donde se ejecuta esta solicitud. No admite valores NULL.
context_info varbinary(128) Valor CONTEXT_INFO de la sesión. Acepta valores NULL.
percent_complete real Porcentaje 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_time bigint Solo interno. No admite valores NULL.
cpu_time int Tiempo de CPU en milisegundos utilizado por la solicitud. No admite valores NULL.
total_elapsed_time int Tiempo total transcurrido en milisegundos desde que llegó la solicitud. No admite valores NULL.
scheduler_id int Identificador del programador que programa esta solicitud. No admite valores NULL.
task_address varbinary(8) Dirección de memoria asignada a la tarea asociada con esta solicitud. Acepta valores NULL.
Lecturas bigint Número de lecturas realizadas por esta solicitud. No admite valores NULL.
Escrituras bigint Número de escrituras realizadas por esta solicitud. No admite valores NULL.
logical_reads bigint Número de lecturas lógicas realizadas por la solicitud. No admite valores NULL.
text_size int Valor de TEXTSIZE para esta solicitud. No admite valores NULL.
language nvarchar(128) Configuración de idioma para esta solicitud. Acepta valores NULL.
date_format nvarchar(3) Valor de DATEFORMAT para esta solicitud. Acepta valores NULL.
date_first smallint Valor de DATEFIRST para esta solicitud. No admite valores NULL.
quoted_identifier bit 1 = El valor de QUOTED_IDENTIFIER es ON para la solicitud. De lo contrario, es 0.

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

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

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

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

No admite valores NULL.
ansi_padding bit 1 = El valor de ANSI_PADDING es ON para la solicitud.

De lo contrario, es 0.

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

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

No admite valores NULL.
transaction_isolation_level smallint Nivel 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_timeout int Tiempo de espera de bloqueo en milisegundos para esta solicitud. No admite valores NULL.
deadlock_priority int Valor de DEADLOCK_PRIORITY para la solicitud. No admite valores NULL.
row_count bigint Número de filas que esta solicitud ha devuelto al cliente. No admite valores NULL.
prev_error int Último error que se ha producido durante la ejecución de la solicitud. No admite valores NULL.
nest_level int Nivel de anidamiento actual del código que se está ejecutando en la solicitud. No admite valores NULL.
granted_query_memory int Número de páginas asignadas a la ejecución de una consulta en la solicitud. No admite valores NULL.
executing_managed_code bit Indica 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_id int Identificador del grupo de cargas de trabajo al que pertenece esta consulta. No admite valores NULL.
query_hash binary(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_hash binary(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_handle varbinary(64) Válido para : SQL Server 2014 (12.x) y versiones posteriores.

SQL identificador de la consulta individual.

Esta columna es NULL si Almacén de consultas no está habilitado para la base de datos.
statement_context_id bigint Válido para : SQL Server 2014 (12.x) y versiones posteriores.

Clave externa opcional que se sys.query_context_settings.

Esta columna es NULL si Almacén de consultas no está habilitado para la base de datos.
dop int Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Grado de paralelismo de la consulta.
parallel_worker_count int Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Número de trabajadores paralelos reservados si se trata de una consulta paralela.
external_script_request_id uniqueidentifier Válido para : SQL Server 2016 (13.x) y versiones posteriores.

Identificador de solicitud de script externo asociado a la solicitud actual.
is_resumable bit Válido para : SQL Server 2017 (14.x) y versiones posteriores.

Indica si la solicitud es una operación de índice reanudable.
page_resource binary(8) Se aplica a: SQL Server 2019 (15.x)

Representación hexadecimal de 8 bytes del recurso de página si wait_resource la columna contiene una página. Para obtener más información, vea sys.fn_PageResCracker.
page_server_reads bigint Se aplica a: Azure SQL Database Hiperescala

Número de lecturas del servidor de páginas realizadas por esta solicitud. No admite valores NULL.
     

Comentarios

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.

Al ejecutar solicitudes paralelas en modo de fila ,asigna un subproceso de trabajo para coordinar los subprocesos de trabajo responsables de completar las tareas SQL Server asignadas a ellos. En esta DMV, solo el subproceso de coordinador es visible para la solicitud. Las columnas reads , , y no se actualizan para writes logical_reads el subproceso de row_count coordinación. Las columnas wait_type , , , y solo se actualizan para wait_time last_wait_type el subproceso de wait_resource granted_query_memory coordinador. Para más información, consulte la guía de arquitectura de subprocesos y tareas.

Permisos

Si el usuario tiene permiso en el servidor, el usuario verá todas las sesiones en ejecución en la instancia de ; de lo contrario, el usuario solo verá VIEW SERVER STATE SQL Server la sesión actual. VIEW SERVER STATEno se puede conceder en Azure SQL Database por sys.dm_exec_requests lo que siempre se limita a la conexión actual.

En Always-On escenarios, si la réplica secundaria se establece en solo intención de lectura , la conexión a la secundaria debe especificar su intención de aplicación en los parámetros de cadena de conexión agregando applicationintent=readonly . De lo contrario, la comprobación de acceso de no pasará para las bases de datos del grupo sys.dm_exec_requests de disponibilidad, aunque VIEW SERVER STATE el permiso esté presente.

Ejemplos

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

En el ejemplo siguiente se sys.dm_exec_requests consulta para buscar el lote interesante y copiarlo de la transaction_id salida.

SELECT * FROM sys.dm_exec_requests;  
GO

A continuación, para buscar información de bloqueo, use el objeto copiado transaction_id con la función del 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

En el ejemplo siguiente 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  

D. Ordenación de solicitudes existentes por CPU

SELECT 
   req.session_id
   , req.start_time
   , cpu_time 'cpu_time_ms'
   , object_name(st.objectid,st.dbid) 'ObjectName' 
   , substring
      (REPLACE
        (REPLACE
          (SUBSTRING
            (ST.text
            , (req.statement_start_offset/2) + 1
            , (
               (CASE statement_end_offset
                  WHEN -1
                  THEN DATALENGTH(ST.text)  
                  ELSE req.statement_end_offset
                  END
                    - req.statement_start_offset)/2) + 1)
       , CHAR(10), ' '), CHAR(13), ' '), 1, 512)  AS statement_text  
FROM sys.dm_exec_requests AS req  
   CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as ST
   ORDER BY cpu_time desc;
GO

Consulte también

Pasos siguientes