Suivre les plans de maintenance

Comment savoir si un plan de maintenance s’est correctement exécuté ?
Comment savoir combien de temps a duré son exécution ?

Une requête simple dans la base de données système MSDB nous donne la réponse …
Valable sous SQL Server 2000 et ultérieur ;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---------------------------------
-- Nicolas SOUQUET - 09/07/2009 -  
---------------------------------
SELECT plan_name,
    database_name,
    activity,
    start_time,
    end_time,
    CASE LEN(CAST(duration / 3600 AS VARCHAR(4)))
      WHEN 1 THEN '0' + CAST(duration / 3600 AS VARCHAR(4))
      ELSE CAST(duration / 3600 AS VARCHAR(4))
    END + ':' +
    CASE LEN(CAST(duration / 60 % 60 AS VARCHAR(2)))
      WHEN 1 THEN '0' + CAST(duration / 60 % 60 AS VARCHAR(2))
      ELSE CAST(duration / 60 % 60 AS VARCHAR(2))
    END
    + ':' +  
    CASE LEN(CAST(duration % 60 AS VARCHAR(2)))
      WHEN 1 THEN '0' + CAST(duration % 60 AS VARCHAR(2))
      ELSE CAST(duration % 60 AS VARCHAR(2))
    END Durée
FROM msdb.dbo.sysdbmaintplan_history
WHERE succeeded = 0 -- 0 : échec | 1 : réussite
-- AND start_time BETWEEN '20090907' AND '20090908'
ORDER BY database_name, start_time

Il est dès lors facile de placer cette requête dans un DataSet sous Reporting Services ou dans une application WinForms pour pouvoir s’afficher l’état des plans de maintenance qui doivent avoir lieu sur une instance de SQL Server ;)

ElSuket

2 réflexions au sujet de « Suivre les plans de maintenance »

  1. Lut Elsuket

    J’ai essayé ton script sur une base de données SQL Server 2005 mais je n’obtiens rien … ?

    Vu que sur SQL Server 2005 les plans de maintenance se basent sur une autre technologie (SSIS), les tables de référence ont changé. Dans le BOL SQL Server 2005, la table système sysdbmaintplan_history ne doit apparemment plus être utilisée.

    Les tables à utiliser sont :

    sysmaintplan_plans ou msdb.dbo.sysdtspackages90
    sysmaintplan_subplans
    sysmaintplan_log
    sysmaintplan_logdetails

    ++ ;-)

Laisser un commentaire