¿Cómo encuentro una consulta de larga duración con ID de proceso, nombre de proceso, tiempo de inicio de sesión, usuario, hora de inicio y duración?


23

¿Alguien puede ayudarme a encontrar los detalles a continuación para consultas de larga duración? ProcessID, nombre del proceso, base de datos, host, usuario, tiempo de inicio de sesión del proceso, hora de inicio de la consulta y duración de la consulta.

Estoy buscando una consulta o un SP que me brinde estos datos.

Respuestas:


38

Como se comentó, la mejor herramienta es sp_whoIsActive por Adam Machanic . Se puede usar de varias maneras, para ver qué se está ejecutando en el momento en que se inicia el script o se puede ejecutar en bucles para monitorear alguna acción específica, como consultas lentas, por ejemplo.

Para ejecutar en bucle, eche un vistazo aquí: Cómo registrar la actividad usando sp_whoisactive en un bucle Para detectar consultas lentas: Cómo usar sp_WhoIsActive para encontrar consultas lentas de SQL Server

Puede usar directamente los DMV para obtener sus consultas más lentas y actuar desde allí. Verifique las consultas de diagnóstico de Glenn Berry .

Y finalmente, puede usar esta consulta para encontrar las consultas que requieren más tiempo. Puedes jugar con dm_exec_query_stats para agregar más datos o unirte a otros para obtener más información. Tenga en cuenta que el dmv se vacía y actualiza cada vez que se reinicia el servidor.

SELECT  creation_time 
        ,last_execution_time
        ,total_physical_reads
        ,total_logical_reads 
        ,total_logical_writes
        , execution_count
        , total_worker_time
        , total_elapsed_time
        , total_elapsed_time / execution_count avg_elapsed_time
        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
         ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

EDITAR

Ya hay una nueva opción disponible desde hace algún tiempo, First Reponder Kit . Es un conjunto de secuencias de comandos, proporcionadas gratuitamente bajo licencia MIT por el equipo de BrentOzar, que ayudarán en diversas tareas, incluida la solicitada por el OP. Principalmente los scripts sp_BlitzFirst y sp_BlitzWho para este caso.


10

Recomiendo encarecidamente sp_whoisactive . Es un SP de terceros, pero puede decirle todo lo que enumeró anteriormente, y mucho más que eso. Es una herramienta increíble para tener en tu arsenal.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.