sys.dm_exec_requests (Transact-SQL)
Retorna informações sobre cada solicitação sendo executada no SQL Server.
Observação |
---|
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. |
Nome de 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 o seguinte:
Não permite valor nulo. |
command |
nvarchar(16) |
Identifica o tipo atual de comando que está sendo processado. Os tipos de comando comuns incluem:
O texto da solicitação pode ser recuperado usando-se 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:
Não permite valor nulo. |
sql_handle |
varbinary(64) |
Mapa de hash do texto SQL da solicitação. Permite valor nulo. |
statement_start_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução se inicia. Pode ser usado junto com sql_handle, statement_end_offset e a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo. |
statement_end_offset |
int |
Número de caracteres no procedimento em lote ou armazenado atualmente em execução no qual a instrução atualmente em execução termina. Pode ser usado junto com sql_handle, statement_end_offset e a função de gerenciamento dinâmico sys.dm_exec_sql_text para recuperar a instrução atualmente em execução para a solicitação. Permite valor nulo. |
plan_handle |
varbinary(64) |
Mapa de hash do plano para execução SQL. 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 NULL, a solicitação não estará bloqueada ou as informações da sessão de bloqueio não estarão disponíveis (ou não podem 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. |
wait_type |
nvarchar(60) |
Se a solicitação estiver bloqueada, esta coluna retornará o tipo de espera. Permite valor nulo. |
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) |
Valor CONTEXT_INFO da sessão. Permite valor nulo. |
percent_complete |
real |
Porcentagem de trabalho concluída para os comandos a seguir:
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. |
language |
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. |
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 tempo de execução de linguagem comum, como rotinas, tipos e gatilhos. É definida para todo o tempo em que um objeto de tempo de execução de linguagem comum estiver na pilha, mesmo durante a execução de Transact-SQL no tempo de execução de linguagem comum. 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 |
binary(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 agregado usado para consultas que são diferentes apenas nos valores literais. Para obter mais informações, consulte Localizando e ajustando consultas semelhantes usando consulta e hashes de plano de consulta. |
query_plan_hash |
binary(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. Para obter mais informações, consulte Localizando e ajustando consultas semelhantes usando consulta e hashes de plano de consulta. |
Permissões
Requer a permissão VIEW SERVER STATE no servidor.
Observação |
---|
Se o usuário tiver a permissão VIEW SERVER STATE no servidor, verá todas as sessões em execução na instância do SQL Server; caso contrário, verá apenas a sessão atual. |
Exemplos
A. Localizando o texto de 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
O exemplo a seguir consulta sys.dm_exec_requests para localizar o lote interessante e copiar o transaction_id da saída.
SELECT * FROM sys.dm_exec_requests;
GO
Em seguida, para localizar 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 localizar 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
Consulte também