/ / ¿Cómo rastrear el tiempo de ejecución del procedimiento? - sql, sql-server

Cómo rastrear el tiempo de ejecución del procedimiento? - sql, sql-server

Tengo algunos procedimientos que no están optimizados. Quiero analizar si estos procedimientos se optimizan o no, ya que solo no hay datos masivos para verificar.

Quiero poner una consulta sql en todo el procedimientoque insertará en una tabla que es el tiempo exacto tomado por la consulta anterior para ejecutar. Crearé una tabla en la que mi procedimiento insertará el tiempo de ejecución de la consulta.

¿Hay alguna manera de que pueda hacer esto?

Respuestas

2 para la respuesta № 1

Si desea integrarlo en su procedimiento, establezca una variable que almacene la hora de inicio de la ejecución al comienzo, y restela con la hora actual al final del procedimiento.

/* Start of your procedure */
Declare @startTime datetime = GETDATE()
Declare @duration varchar

/* Your procedure */
...

/* End of your procedure */
Set @duration = CONVERT(VARCHAR(8),GETDATE() - @startTime,108)
Insert into statisticTable
Values ("procedureName", @duration)

1 para la respuesta № 2

¿Trataste de usar el Analizador de SQL?

En Trace Properties puede definir Start Time y End time de procedimientos almacenados. Es una herramienta muy poderosa.


0 para la respuesta № 3

Puede verificar los productos mencionados utilizando Vistas de administración dinámicas....

Si está utilizando una versión anterior de SQL Server, use el Analizador de SQL Server ...


-1 para la respuesta № 4

¿Por qué querrías hacer eso?Hay muchas herramientas como DMV, trace, exevents, etc. Agregará sobrecarga a su proc si pone ese tipo de código. Para el mejor procedimiento, es dm_procedure_stats DMV, pero está disponible solo en 2008 R2 y superior. Utilice dm_exec_query_stats para las versiones anteriores. Éstas le proporcionarán estadísticas mucho mejores sobre el tiempo, el io lógico, el tiempo de ejecución y las E / S físicas, etc.