SQL Server – Déterminer quelle est la dernière procédure stocké qui s’est lancée sur votre base de données en ordonnant sur la dernière exécution au lieu d’utiliser SQL Profiler.

Par défaut

SQL Profiler est un outil intéressant mais qui est parfois pas aussi intuitive à utiliser. L’alternative réside à faire appel à plusieurs vues ou tables utiles pour les DBAs dans lesquels SQL Server  enregistre des informations.

Pour notre problème, tout d’abord, il suffit de connaitre l’identifiant de la base de donnée. Lancer la commande suivante.

[code language= »sql »]
select db_id()
[/code]

La base sur laquelle je veux lancer des investigations a un identifiant qui est égal a 11.

Ensuite, faites la requete suivante, en filtrant sur le database_id qui se trouve dans sys.dm_exec_procedure_stats

[code language= »sql »]
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) ‘proc name’,
d.cached_time, d.last_execution_time, d.total_elapsed_time,
d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
where d.database_id = 11
ORDER BY [last_execution_time] DESC;
[/code]

Vous aurez la liste des procédures stocquées, et la dernière qui a été lancée sera la première sur le tableau des résultats.