sys.dm_exec_requests (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure simAzure Synapse Analytics

Retorna informações sobre cada solicitação que está sendo executada no SQL Server . Para obter mais informações sobre solicitações, consulte o Guia de arquitetura de threads e tarefas.

Observação

para chamá-lo do pool de SQL dedicado no Azure Synapse Analytics ou PDW (Analytics Platform System) , consulte sys.dm_pdw_exec_requests (Transact-SQL). para uso do pool de SQL sem servidor sys.dm_exec_requests .

Nome da coluna Tipo de dados Descrição
session_id smallint ID da sessão a que esta solicitação está relacionada. Não permite valor nulo.
request_id int ID da solicitação. Exclusiva no contexto da sessão. Não permite valor nulo.
start_time datetime Carimbo de data e hora em que a solicitação chegou. Não permite valor nulo.
status nvarchar(30) Status da solicitação. Pode ser um dos seguintes:

Tela de fundo
Executando
Executável
Hibernando
Suspenso

Não permite valor nulo.
. nvarchar(32) Identifica o tipo atual de comando que está sendo processado. Os tipos de comando comuns incluem:

SELECT
INSERT
UPDATE
Delete (excluir)
BACKUP LOG
BACKUP DATABASE
DBCC
FOR

O texto da solicitação pode ser recuperado usando sys.dm_exec_sql_text com o sql_handle correspondente para a solicitação. Os processos de sistema internos definem o comando com base no tipo de tarefa que eles executam. As tarefas podem incluir o seguinte:

LOCK MONITOR
CHECKPOINTLAZY
WRITER

Não permite valor nulo.
sql_handle varbinary(64) É um token que identifica exclusivamente o lote ou o procedimento armazenado do qual a consulta faz parte. Permite valor nulo.
statement_start_offset int Indica, em bytes, começando com 0, a posição inicial da instrução atualmente em execução para o lote ou objeto persistente em execução no momento. Pode ser usado junto com o sql_handle , o statement_end_offset e a sys.dm_exec_sql_text função de gerenciamento dinâmico para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo.
statement_end_offset int Indica, em bytes, começando com 0, a posição final da instrução atualmente em execução para o lote ou objeto persistente em execução no momento. Pode ser usado junto com o sql_handle , o statement_start_offset e a sys.dm_exec_sql_text função de gerenciamento dinâmico para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo.
plan_handle varbinary(64) É um token que identifica exclusivamente um plano de execução de consulta para um lote em execução no momento. Permite valor nulo.
database_id smallint ID do banco de dados no qual a solicitação está em execução. Não permite valor nulo.
user_id int ID do usuário que enviou a solicitação. Não permite valor nulo.
connection_id uniqueidentifier ID da conexão em que a solicitação chegou. Permite valor nulo.
blocking_session_id smallint ID da sessão que está bloqueando a solicitação. Se esta coluna for nula ou igual a 0, a solicitação não será bloqueada ou as informações da sessão da sessão de bloqueio não estarão disponíveis (ou não poderão ser identificadas).

-2 = O recurso de bloqueio pertence a uma transação distribuída órfã.

-3 = O recurso de bloqueio pertence a uma transação de recuperação adiada.

-4 = A ID da sessão do proprietário da trava de bloqueio não pôde ser determinada neste momento devido a transições internas de estado da trava.

-5 = a ID de sessão do proprietário da trava de bloqueio não pôde ser determinada porque não é rastreada para esse tipo de trava (por exemplo, para uma trava SH).
wait_type nvarchar(60) Se a solicitação estiver bloqueada, esta coluna retornará o tipo de espera. Permite valor nulo.

para obter informações sobre os tipos de esperas, consulte sys.dm_os_wait_stats (Transact-SQL).
wait_time int Se a solicitação estiver bloqueada, esta coluna retornará a duração, em milissegundos, da espera atual. Não permite valor nulo.
last_wait_type nvarchar(60) Se esta solicitação tiver sido previamente bloqueada, esta coluna retornará o tipo da última espera. Não permite valor nulo.
wait_resource nvarchar(256) Se a solicitação estiver bloqueada, esta coluna retornará o recurso pelo qual a solicitação está esperando atualmente. Não permite valor nulo.
open_transaction_count int Número de transações abertas para esta solicitação. Não permite valor nulo.
open_resultset_count int Número de conjuntos de resultados abertos para esta solicitação. Não permite valor nulo.
transaction_id bigint ID da transação na qual esta solicitação é executada. Não permite valor nulo.
context_info varbinary(128) CONTEXT_INFO valor da sessão. Permite valor nulo.
percent_complete real Porcentagem de trabalho concluída para os comandos a seguir:

ALTER INDEX REORGANIZE
Opção AUTO_SHRINK com ALTER DATABASE
BACKUP DATABASE
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
RECOVERY
RESTORE DATABASE
ROLLBACK
TDE ENCRYPTION

Não permite valor nulo.
estimated_completion_time bigint Somente interno. Não permite valor nulo.
cpu_time int Tempo da CPU, em milissegundos, usado pela solicitação. Não permite valor nulo.
total_elapsed_time int Tempo total decorrido em milissegundos desde que a solicitação chegou. Não permite valor nulo.
scheduler_id int ID do agendador que está programando esta solicitação. Não permite valor nulo.
task_address varbinary(8) Endereço de memória alocado à tarefa associada a esta solicitação. Permite valor nulo.
reads bigint Número de leituras executadas por esta solicitação. Não permite valor nulo.
writes bigint Número de gravações executadas por esta solicitação. Não permite valor nulo.
logical_reads bigint Número de leituras lógicas executadas pela solicitação. Não permite valor nulo.
text_size int Configuração TEXTSIZE para esta solicitação. Não permite valor nulo.
Linguagem nvarchar(128) Configuração de idioma para a solicitação. Permite valor nulo.
date_format nvarchar(3) Configuração DATEFORMAT para a solicitação. Permite valor nulo.
date_first smallint Configuração DATEFIRST para a solicitação. Não permite valor nulo.
quoted_identifier bit 1 = QUOTED_IDENTIFIER é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
arithabort bit 1 = configuração ARITHABORT é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
ansi_null_dflt_on bit 1 = configuração ANSI_NULL_DFLT_ON é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
ansi_defaults bit 1 = configuração ANSI_DEFAULTS é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
ansi_warnings bit 1 = configuração ANSI_WARNINGS é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
ansi_padding bit 1 = configuração ANSI_PADDING é ON para a solicitação.

Caso contrário, é 0.

Não permite valor nulo.
ansi_nulls bit 1 = configuração ANSI_NULLS é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
concat_null_yields_null bit 1 = configuração CONCAT_NULL_YIELDS_NULL é ON para a solicitação. Caso contrário, é 0.

Não permite valor nulo.
transaction_isolation_level smallint Nível de isolamento com que a transação desta solicitação é criada. Não permite valor nulo.
0 = Não Especificado
1 = Leitura Não Confirmada
2 = Leitura Confirmada
3 = Repetível
4 = Serializável
5 = Instantâneo
lock_timeout int Tempo limite de bloqueio em milissegundos desta solicitação. Não permite valor nulo.
deadlock_priority int Configuração DEADLOCK_PRIORITY da solicitação. Não permite valor nulo.
row_count bigint Número de linhas que foram retornadas ao cliente por esta solicitação. Não permite valor nulo.
prev_error int Último erro ocorrido durante a execução da solicitação. Não permite valor nulo.
nest_level int Nível de aninhamento atual do código sendo executado na solicitação. Não permite valor nulo.
granted_query_memory int Número de páginas alocadas à execução de uma consulta na solicitação. Não permite valor nulo.
executing_managed_code bit Indica se uma solicitação específica está atualmente executando objetos de Common Language runtime, como rotinas, tipos e gatilhos. É definida para todo o tempo em que um objeto de Common Language runtime estiver na pilha, mesmo durante a execução de Transact-SQL no Common Language runtime. Não permite valor nulo.
group_id int ID do grupo de carga de trabalho a que pertence esta consulta. Não permite valor nulo.
query_hash binário (8) Valor de hash binário calculado na consulta e usado para identificar consultas com lógica semelhante. Você pode usar o hash de consulta para determinar o recurso de agregação usado para consultas que são diferentes apenas nos valores literais.
query_plan_hash binário (8) Valor de hash binário calculado no plano de execução de consulta e usado para identificar planos de execução de consulta semelhantes. Você pode usar o hash de plano de consulta para localizar o custo cumulativo de consultas com planos de execução semelhantes.
statement_sql_handle varbinary(64) Aplica-se a: SQL Server 2014 (12.x) e posterior.

SQL identificador da consulta individual.

Esta coluna será nula se Repositório de Consultas não estiver habilitada para o banco de dados.
statement_context_id bigint Aplica-se a: SQL Server 2014 (12.x) e posterior.

A chave estrangeira opcional para sys.query_context_settings.

Esta coluna será nula se Repositório de Consultas não estiver habilitada para o banco de dados.
dop int Aplica-se a: SQL Server 2016 (13.x) e posterior.

O grau de paralelismo da consulta.
parallel_worker_count int Aplica-se a: SQL Server 2016 (13.x) e posterior.

O número de operadores paralelos reservados se esta for uma consulta paralela.
external_script_request_id uniqueidentifier Aplica-se a: SQL Server 2016 (13.x) e posterior.

A ID de solicitação de script externo associada à solicitação atual.
is_resumable bit Aplica-se a: SQL Server 2017 (14.x) e posterior.

Indica se a solicitação é uma operação de índice reumável.
page_resource binary(8) Aplica-se ao: SQL Server 2019 (15.x)

Uma representação hexadecimal de 8 byte do recurso de página se wait_resource a coluna contiver uma página. Para obter mais informações, consulte sys.fn_PageResCracker.
page_server_reads bigint Aplica-se a: Banco de Dados SQL do Azure Hiperescala

Número de leituras de servidor de página executadas por essa solicitação. Não permite valor nulo.
     

Comentários

Para executar código fora do SQL Server (por exemplo, procedimentos armazenados estendidos e consultas distribuídas), um thread deve ser executado fora do controle de um agendador não preventivo. Para fazer isso, um trabalhador muda para o modo preventivo. Os valores de tempo retornados por essa exibição de gerenciamento dinâmico não incluem o tempo gasto no modo preventivo.

Ao executar solicitações paralelas no modo de linha ,o atribui um thread de trabalho para coordenar os threads de trabalho responsáveis por concluir tarefas SQL Server atribuídas a eles. Nessa DMV, somente o thread coordenador está visível para a solicitação. As colunas leem , grava, logical_reads e row_count não são atualizados para o thread coordenador. As colunas wait_type, wait_time, last_wait_type, wait_resource e granted_query_memory são atualizadas apenas para o thread coordenador. Para saber mais, confira o Guia de arquitetura de threads e tarefas.

Permissões

Se o usuário tiver permissão no servidor, o usuário verá todas as sessões em execução na instância do ; caso contrário, o usuário verá VIEW SERVER STATE SQL Server apenas a sessão atual. VIEW SERVER STATEnão pode ser concedido em Banco de Dados SQL do Azure sys.dm_exec_requests portanto, está sempre limitado à conexão atual.

Em Always-On cenários, se a réplica secundária estiver definida como somente intenção de leitura , a conexão com o secundário deverá especificar sua intenção de aplicativo em parâmetros de cadeia de conexão adicionando applicationintent=readonly . Caso contrário, a verificação de acesso para não será aprovada para bancos de dados no grupo sys.dm_exec_requests de disponibilidade, mesmo se VIEW SERVER STATE a permissão estiver presente.

Exemplos

a. Localizando o texto da consulta para um lote em execução

O exemplo a seguir consulta sys.dm_exec_requests para localizar a consulta interessante e copiar o sql_handle da saída.

SELECT * FROM sys.dm_exec_requests;  
GO  

Em seguida, para obter o texto da instrução, use o sql_handle copiado com a função do sistema sys.dm_exec_sql_text(sql_handle).

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

B. Localizando todos os bloqueios que estão sendo mantidos por um lote em execução

O exemplo a seguir sys.dm_exec_requests para encontrar o lote interessante e copiá-lo transaction_id da saída.

SELECT * FROM sys.dm_exec_requests;  
GO

Em seguida, para encontrar informações de bloqueio, use o transaction_id copiado com a função do 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. Localizando todas as solicitações bloqueadas atualmente

O exemplo a seguir consulta sys.dm_exec_requests para encontrar informações sobre solicitações 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. Ordenando solicitações 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 Também

Funções e exibições de gerenciamento dinâmico
Funções e exibições de gerenciamento dinâmico relacionadas à execução
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
SQL Server, SQL de estatísticas
Guia de arquitetura de processamento de consultas
Guia de arquitetura de thread e tarefa