Script - SQL Server - Monitorar sessões ativas e requisições em execução

Esse comando SQL é usado para monitorar sessões ativas e requisições em execução em uma instância do SQL Server. Ele retorna informações úteis para diagnóstico, especialmente em casos de bloqueios entre sessões (blocking).

 SELECT
    s.session_id,
    r.status,
    r.command AS sql_command,
    r.blocking_session_id,
    s.login_name,
    t.text AS sql_text
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE s.is_user_process = 1
ORDER BY r.blocking_session_id DESC, s.session_id;


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 um sql_handle.


⚙️ Como ela funciona:

  • Usa INNER JOIN entre requests e sessions 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