Script - SQL Server - Monitorar sessões ativas e requisições em execução
O que a consulta retorna:
-
s.session_id
: ID da sessão atual. -
r.status
: Status da requisição (ex:running
,suspended
, etc). -
r.command
: Comando SQL que está sendo executado (ex:SELECT
,INSERT
, etc). -
r.blocking_session_id
: Se essa sessão estiver sendo bloqueada, mostra o ID da sessão que está causando o bloqueio. -
s.login_name
: Nome do usuário conectado. -
t.text
: O texto SQL da requisição (a query que está sendo executada).
🧠 Fontes de dados:
-
sys.dm_exec_requests
(r
): Mostra informações sobre requisições em execução no momento. -
sys.dm_exec_sessions
(s
): Mostra informações sobre sessões conectadas. -
sys.dm_exec_sql_text(r.sql_handle)
(t
): Função que retorna o texto da query executada, a partir de umsql_handle
.
⚙️ Como ela funciona:
-
Usa
INNER JOIN
entrerequests
esessions
para unir informações da requisição com dados da sessão. -
Usa
OUTER APPLY
para buscar o texto SQL da requisição associada (pode não existir, por isso éOUTER
). -
Filtra para mostrar apenas processos de usuários:
WHERE s.is_user_process = 1
. -
Ordena por sessões que estão bloqueando outras:
ORDER BY r.blocking_session_id DESC, s.session_id
.
🧾 Exemplo de uso:
Se você estiver investigando lentidão, deadlocks ou sessões travadas, essa consulta ajuda a:
-
Identificar quem está bloqueando quem.
-
Ver o comando SQL que está sendo executado.
-
Descobrir se há sessões presas ou demorando demais.
Comentários
Postar um comentário