Me gustaría saber si hay una manera de enviar una notificación en punto muerto. Si es así, qué consultas serían necesarias. Entiendo que SQL Server se encarga de los puntos muertos, simplemente me gustaría obtener información sobre las consultas involucradas.
Encontré lo siguiente para determinar consultas de larga duración:
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
where total_elapsed_time >= 300000000 --5 min
ORDER BY total_elapsed_time / execution_count DESC;
Me gustaría saber si lo anterior es la forma correcta de hacerlo, o ¿hay una mejor manera de determinar si alguna consulta lleva más tiempo que un intervalo específico, digamos 5 min como se muestra?
Gracias
Yo preferiría la sugerencia de @StanleyJohns si tiene SQL2008. Vale la pena familiarizarse con los eventos extendidos como herramienta de diagnóstico y la serie An XEvent a Day de Jonathon es un excelente lugar para comenzar.
Una alternativa para los puntos muertos es habilitar las marcas de seguimiento 1204 y 1222 , que vuelcan la información de punto muerto en el registro de errores de SQL. Habilite ambos para obtener la información en dos formatos diferentes, lo que puede facilitar la comprensión de las complejas cadenas de punto muerto.
fuente