Il n'est pas stocké dans sys.dm_exec_cached_plans
, ni n'est enterré nulle part dans le plan XML que je peux trouver. Cependant, il existe des informations utiles dans d'autres DMV.
Pour les procédures stockées, nous pouvons obtenir l'heure à laquelle un plan a été mis en cache à partir de sys.dm_exec_procedure_stats
:
SELECT TOP(250)
p.name AS [SP Name]
, ps.execution_count
, ps.cached_time
FROM
sys.procedures p WITH (NOLOCK)
INNER JOIN
sys.dm_exec_procedure_stats ps WITH (NOLOCK)
ON p.[object_id] = ps.[object_id]
WHERE
ps.database_id = DB_ID()
ORDER BY
ps.cached_time DESC
OPTION
(RECOMPILE);
Pour les requêtes ad hoc, il y a l'heure de création dans sys.dm_exec_query_stats
:
SELECT TOP(250)
st.[text] AS [QueryText]
, qs.execution_count
, qs.creation_time
FROM
sys.dm_exec_cached_plans cp WITH (NOLOCK)
INNER JOIN
sys.dm_exec_query_stats qs WITH (NOLOCK)
ON qs.plan_handle = cp.plan_handle
CROSS APPLY
sys.dm_exec_sql_text(cp.plan_handle) st
WHERE
cp.objtype = N'Adhoc'
ORDER BY
qs.creation_time DESC
OPTION
(RECOMPILE);
Selon @SqlKiwi ... le passage de creation_time à cached_time était simplement dû au fait que des procédures et des déclencheurs ont été ajoutés en 2008 et que l'occasion a été saisie de choisir un nom plus descriptif. L'heure créée / mise en cache reflète la dernière compilation, pas l'heure de création du plan d'origine.
Mark Storey-Smith
la source