Actually speaking, without explicit logging or tracing, it is not possible to get this information for each and every Stored Procedure of our Database. However, we can get this detail along with many other relevant information for the stored procedure having it’s execution plan currently cached on the server by using - sys.dm_exec_procedure_stats It’s a system dynamic view that returns aggregate performance statistics for cached stored procedures.Please note that this view has been introduced from SQL Server 2008.
The important thing to note is that this view returns one row for each cached stored procedure plan, and the lifetime of the row is as long as the stored procedure remains cached. When a stored procedure is removed from the cache, the corresponding row is eliminated from this view.
So, let’s see a way, using which at least we can find out the some important facts for the cached stored procedures -
USE DBNameP.S. Please replace the DBName with the actual name of the Database.
INNER JOIN sys.objects O
ON O.[object_id] = PS.[object_id]
The above script will return the name of all the cached stored procedure of the current database with their last execution time.
For more details on this dynamics view, please refer - sys.dm_exec_procedure_stats (Transact-SQL)