Plan de maintenance : Durée moyenne par mois

Il peut être utile de connaître la tendance des durées des plans de maintenance en place dans le temps. D’un point vue proactif on peut remarquer par exemple que la durée d’un plan de maintenance atteindra bientôt la limite imposée par la fenêtre de maintenance et engager les actions nécessaires à l’optimisation et la réduction de celui-ci. D’un point de vue statistique, on peut par exemple voir l’évolution des durées des plans de maintenance et corréler ces informations à celle de la base elle même : Y’a t’il eu une évolution de la base ? Quels sont les changements sont intervenus ? Le volume des données est-il devenu beaucoup plus important ? etc…

Ce script se base sur l’historique des plans de maintenance sur le serveur.

SELECT
    p.name,
    sp.subplan_name,
    CAST(MONTH(spl.start_time) AS CHAR(2)) + ‘ / ‘ + CAST(YEAR(spl.start_time) AS CHAR(4)) AS date_plan,
    CASE LEN(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 3600)
      WHEN 1 THEN ‘0’ + CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 3600 AS VARCHAR(4))
      ELSE CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 3600 AS VARCHAR(4))
    END + ‘:’ +
    CASE LEN(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 60 % 60)
      WHEN 1 THEN ‘0’ + CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 60 % 60 AS VARCHAR(2))
      ELSE CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) / 60 % 60 AS VARCHAR(2))
    END
    + ‘:’ + 
    CASE LEN(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) % 60)
      WHEN 1 THEN ‘0’ + CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) % 60 AS VARCHAR(2))
      ELSE CAST(AVG(DATEDIFF(ss,spl.start_time,spl.end_time)) % 60 AS VARCHAR(2))
    END duration
FROM msdb.dbo.sysmaintplan_plans p
INNER JOIN msdb.dbo.sysmaintplan_subplans sp
ON p.id = sp.plan_id
INNER JOIN msdb.dbo.sysmaintplan_log spl
ON sp.subplan_id = spl.subplan_id
/* Décommentez pour avoir un plan de maintenance en particulier */
–WHERE p.name = ‘Plan de maintenance de votre choix’
AND spl.succeeded = 1 — Plan de maintenance ok
GROUP BY p.name,sp.subplan_name, YEAR(spl.start_time), MONTH(spl.start_time);

Bonne surveillance !!!

David BARBARIN (Mikedavem)
Elève ingénieur CNAM Lyon

Laisser un commentaire