sys.dm_exec_requests

Actualizado: 12 de diciembre de 2006

Devuelve una fila para cada solicitud que se ejecuta dentro de SQL Server. Las vistas de administración dinámica sys.dm_exec_connections, sys.dm_exec_sessions y sys.dm_exec_requests de ámbito de servidor se asignan a la vista del sistema sys.sysprocesses (anteriormente, una tabla del sistema).

[!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

Id. de la sesión con la que está relacionado este mensaje. No acepta valores NULL.

request_id

int

Id. de la solicitud. Es único en el contexto de la sesión. No acepta valores NULL.

start_time

datetime

Hora a la que la solicitud está programada para ejecutarse. No acepta valores NULL.

status

nvarchar(60)

Estado de la solicitud. Los valores son los siguientes:

  • Fondo. La solicitud es un subproceso en segundo plano, como el monitor de recursos o el monitor de interbloqueos.
  • En ejecución. La solicitud se está ejecutando.
  • Ejecutable. La solicitud se está ejecutando y está temporalmente fuera de programa porque se ha quedado sin quórum.
  • En espera. No hay ningún trabajo que realizar.
  • Pendiente. La solicitud está esperando a que un proceso de trabajo la ejecute.
  • Suspendido. La solicitud espera algún evento.

No acepta valores NULL.

command

nvarchar(32)

Identifica el tipo de comando que se va a procesar. Los tipos de comandos comunes incluyen lo siguiente:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • BACKUP LOG
  • BACKUP DB
  • DBCC
  • WAITFOR

El texto de la solicitud se puede recuperar con la función de administración dinámica 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 acepta valores NULL.

sql_handle

varbinary(64)

Identificador de la instrucción SQL de la solicitud. Este identificador se puede usar para recuperar el texto de la instrucción real de la función de administración dinámica sys.dm_exec_sql_text. No acepta valores NULL.

statement_start_offset

int

Posición del carácter inicial de la instrucción en ejecución en el lote o procedimiento almacenado en ejecución. Se puede utilizar junto con la función de administración dinámica sys.dm_exec_sql_text, statement_end_offset y sql_handle para recuperar la instrucción en ejecución para la solicitud. Acepta valores NULL.

statement_end_offset

int

Posición del carácter final de la instrucción en ejecución en el lote o procedimiento almacenado en ejecución. Se puede utilizar junto con la función de administración dinámica sys.dm_exec_sql_text, statement_start_offset y sql_handle para recuperar la instrucción en ejecución para la solicitud. Acepta valores NULL.

plan_handle

varbinary(64)

Identificador del plan de consulta de la solicitud. Para ver el plan de consulta, úselo con la función de administración dinámica sys.dm_exec_query_plan. Para consultar la caché del plan, use la función de administración dinámica sys.dm_exec_cached_plans. Para ver los atributos del plan, use la función sys.dm_exec_plan_attributes. Acepta valores NULL.

database_id

smallint

Id. de la base de datos en la que se ejecuta la consulta. Para obtener más información de la base de datos, consulte la vista del catálogo sys.databases; para obtener el nombre de la base de datos, use la función intrínseca db_name(). No acepta valores NULL.

user_id

int

Id. del usuario que ejecuta la solicitud. Para obtener más información del usuario, consulte la vista del catálogo sys.database_principals. No acepta valores NULL.

connection_id

uniqueidentifier

Id. de la conexión a la que ha llegado la solicitud. Para obtener más información acerca de la conexión física o lógica, consulte la vista de administración dinámica sys.dm_exec_connections. Acepta valores NULL.

blocking_session_id

smallint

Id. de la sesión que bloquea la solicitud. Si esta columna es 0, la solicitud no está bloqueada, o bien 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 Id. de sesión del propietario del pestillo de bloqueo a causa de transiciones internas de estado del pestillo.

wait_type

nvarchar(60)

Si la solicitud está bloqueada, esta columna devuelve el tipo de espera. Acepta valores NULL.

wait_time

int

Si la solicitud está bloqueada, esta columna devuelve la duración en milisegundos de la espera actual. No acepta valores NULL.

last_wait_type

nvarchar(64)

Si esta solicitud se ha bloqueado anteriormente, esta columna devuelve el tipo de la última espera. No acepta valores NULL.

wait_resource

nvarchar(512)

Si la solicitud está bloqueada, esta columna devuelve el recurso por el que está esperando la solicitud. No acepta valores NULL.

open_transaction_count

int

Número de transacciones abiertas para esta solicitud. No acepta valores NULL.

open_resultset_count

int

Número de conjuntos de resultados abiertos para esta solicitud. No acepta valores NULL.

transaction_id

bigint

Id. de la transacción donde se ejecuta esta solicitud. Este Id. es exclusivo para una instancia de SQL Server. Úselo para consultar las vistas de administración dinámica sys.dm_tran_active_transactions, sys.dm_tran_locks o sys.dm_tran_database_transactions. No acepta valores NULL.

context_info

varbinary(128)

Valor de la instrucción SET CONTEXT_INFO para la solicitud. Acepta valores NULL.

percent_complete

real

Porcentaje de trabajo completado por ciertas operaciones, incluidas las de revertir.

ms177648.note(es-es,SQL.90).gifNota:

Esto no proporciona datos de progreso de consultas.

No acepta valores NULL.

estimated_completion_time

bigint

Sólo para uso interno. No acepta valores NULL.

cpu_time

int

Tiempo de CPU en milisegundos utilizado por la solicitud. No acepta valores NULL.

total_elapsed_time

int

Tiempo total transcurrido en milisegundos desde que llegó la solicitud. No acepta valores NULL.

scheduler_id

int

Id. del programador que programa esta solicitud. Para obtener más información acerca de este programador, consulte la vista de administración dinámica sys.dm_os_schedulers. No acepta valores NULL.

task_address

varbinary(8)

Dirección de memoria asignada a la tarea asociada con esta solicitud. Para obtener más información acerca de esta tarea, consulte la vista de administración dinámica sys.dm_os_tasks. Acepta valores NULL.

reads

bigint

Número de lecturas realizadas por esta solicitud. No acepta valores NULL.

writes

bigint

Número de escrituras realizadas por esta solicitud. No acepta valores NULL.

logical_reads

bigint

Número de lecturas lógicas realizadas por la solicitud. No acepta valores NULL.

text_size

int

Valor de TEXTSIZE para esta solicitud. No acepta valores NULL.

language

nvarchar(256)

Valor 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 acepta valores NULL.

quoted_identifier

bit

1 = El valor de QUOTED_IDENTIFIER es ON para la solicitud. De lo contrario, es 0.

No acepta valores NULL.

arithabort

bit

1 = El valor de ARITHABORT es ON para la solicitud. De lo contrario, es 0.

No acepta 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 acepta valores NULL.

ansi_defaults

bit

1 = El valor de ANSI_DEFAULTS es ON para la solicitud. De lo contrario, es 0.

No acepta valores NULL.

ansi_warnings

bit

1 = El valor de ANSI_WARNINGS es ON para la solicitud. De lo contrario, es 0.

No acepta valores NULL.

ansi_padding

bit

1 = El valor de ANSI_PADDING es ON para la solicitud.

De lo contrario, es 0.

No acepta valores NULL.

ansi_nulls

bit

1 = El valor de ANSI_NULLS es ON para la solicitud. De lo contrario, es 0.

No acepta 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 acepta valores NULL.

transaction_isolation_level

smallint

Nivel de aislamiento de las transacciones de esta solicitud. Los valores son los siguientes:

0 = Unspecified

1 = ReadUncomitted

2 = ReadCommitted

3 = Repeatable

4 = Serializable

5 = Snapshot

No acepta valores NULL.

lock_timeout

int

Tiempo de espera de bloqueo en milisegundos para esta solicitud. No acepta valores NULL.

deadlock_priority

int

Valor de DEADLOCK_PRIORITY para la solicitud. No acepta valores NULL.

row_count

bigint

Número de filas que esta solicitud ha devuelto al cliente. No acepta valores NULL.

prev_error

int

Último error que se ha producido durante la ejecución de la solicitud. No acepta valores NULL.

nest_level

int

Nivel de anidamiento del código que se está ejecutando en la solicitud. No acepta valores NULL.

granted_query_memory

int

Número de páginas asignadas a la ejecución de una consulta en la solicitud. No acepta valores NULL.

executing_managed_code

bit

Indica si esta solicitud ejecuta objetos CLR (Common Language Runtime), como rutinas, tipos y desencadenadores. Se establece para todo el tiempo que un objeto CLR está en la pila, incluso cuando ejecuta Transact-SQL desde CLR. No acepta valores NULL.

Permisos

Requiere el permiso VIEW SERVER STATE en el servidor.

[!NOTA] Si un usuario tiene el permiso VIEW SERVER STATE en el servidor, verá todas las sesiones en ejecución en la instancia de SQL Server; de lo contrario, sólo verá la sesión en la que se ejecute sys.dm_exec_requests.

Cardinalidades de relación

De Para Aplicar en Relación

sys.dm_exec_sessions

sys.dm_exec_requests

session_id

Uno a

ninguno o a varios

sys.dm_exec_requests

sys.dm_exec_sql_text(sql_handle)

CROSS APPLY

OUTER APPLY

Ninguno o uno a

ninguno o a uno

sys.dm_exec_requests

sys.dm_exec_query_plan(plan_handle)

CROSS APPLY

OUTER APPLY

Ninguno o uno a

ninguno o a uno

sys.dm_exec_requests

sys.dm_exec_cached_plans

plan_handle

Ninguno o uno a

ninguno o a uno

sys.dm_exec_requests

sys.dm_exec_plan_attributes(plan_handle)

CROSS APPLY

OUTER APPLY

Ninguno o uno a

ninguno o a uno

sys.dm_exec_requests

sys.databases

database_id

Uno a uno

sys.dm_exec_requests

sys.database_principals

user_id = principal_id

Uno a uno

sys.dm_exec_connections

sys.dm_exec_requests

connection_id

Uno a

ninguno o a uno

sys.dm_exec_requests

sys.dm_tran_active_transactions

transaction_id

Uno a uno

Ejemplos

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

El ejemplo siguiente consulta sys.dm_exec_requests para encontrar la consulta de interés y copiar su valor sql_handle del resultado.

SELECT * FROM sys.dm_exec_requests;
GO

Después, para obtener el texto de la instrucción, use el valor 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 retiene un lote en ejecución

El ejemplo siguiente consulta sys.dm_exec_requests para encontrar el lote de interés y copiar su valor transaction_id del resultado.

SELECT * 
FROM sys.dm_exec_requests
GO

Después, para encontrar información del bloqueo, use el valor 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 ejemplo siguiente se consulta sys.dm_exec_requests para buscar información acerca de 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

Referencia

Asignar tablas del sistema de SQL Server 2000 a vistas del sistema de SQL Server 2005
Funciones y vistas de administración dinámica
Funciones y vistas de administración dinámica relacionadas con ejecuciones
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se ha agregado la asignación de SQL Server 2000 a SQL Server 2005.
  • Se han agregado los ejemplos.
  • Se ha agregado la tabla Cardinalidades de relación.
Contenido modificado:
  • Se han cambiado las descripciones de start_time, status, sql_handle, plan_handle, database_id, user_id, connection_id, transaction_id, context_info, scheduler_id, task_address, language, date_format, transaction_isolation_level, date_first, executing_managed_code.

5 de diciembre de 2005

Contenido nuevo:
  • Se ha agregado una nota sobre el tiempo transcurrido en modo preferente.
Contenido modificado:
  • Se corrigió el tipo de datos de wait_type.