sys.dm_exec_requests (Transact-SQL)
Devuelve información acerca de cada solicitud que se ejecute en SQL Server.
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.
Nombre de 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 |
Identificador 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:
No admite valores NULL. |
command |
nvarchar(16) |
Identifica el tipo de comando actual que se está procesando. Los tipos de comandos comunes incluyen lo siguiente:
El texto de la solicitud se puede recuperar usando sys.dm_exec_sql_text con el sql_handle correspondiente 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:
No admite valores NULL. |
sql_handle |
varbinary(64) |
Asignación hash del texto SQL de la solicitud. Admite valores NULL. |
statement_start_offset |
int |
Número de caracteres del lote que se está ejecutando actualmente o procedimiento almacenado en el que se inicia la instrucción que se está ejecutando actualmente. Se puede usar junto con sql_handle, statement_end_offset y la función de administración dinámica sys.dm_exec_sql_text con el fin de recuperar la instrucción que se está ejecutando actualmente para la solicitud. Admite valores NULL. |
statement_end_offset |
int |
Número de caracteres del lote que se está ejecutando actualmente o procedimiento almacenado en el que finaliza la instrucción que se está ejecutando actualmente. Se puede usar junto con sql_handle, statement_end_offset y la función de administración dinámica sys.dm_exec_sql_text con el fin de recuperar la instrucción que se está ejecutando actualmente para la solicitud. Admite valores NULL. |
plan_handle |
varbinary(64) |
Asignación hash del plan para la ejecución SQL. Admite 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. Admite valores NULL. |
blocking_session_id |
smallint |
Identificador 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_type |
nvarchar(60) |
Si la solicitud está actualmente bloqueada, esta columna devuelve el tipo de espera. Admite valores NULL. |
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. Admite valores NULL. |
percent_complete |
real |
Porcentaje de trabajo completado en los siguientes comandos:
No admite valores NULL. |
estimated_completion_time |
bigint |
Solo para uso 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. Admite valores NULL. |
reads |
bigint |
Número de lecturas realizadas por esta solicitud. No admite valores NULL. |
writes |
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. Admite valores NULL. |
date_format |
nvarchar(3) |
Valor de DATEFORMAT para esta solicitud. Admite 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. |
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. Para obtener más información, vea Buscar y optimizar consultas similares utilizando hash del plan de consulta y de consulta. |
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. Para obtener más información, vea Buscar y optimizar consultas similares utilizando hash del plan de consulta y de consulta. |
Permisos
Se requiere 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.
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 siguiente ejemplo se consulta sys.dm_exec_requests para buscar el lote de interés y copiar su transaction_id desde la salida.
SELECT * FROM sys.dm_exec_requests;
GO
Después, para buscar información de bloqueo, use el transaction_id copiado 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 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
Vea también