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
Aïe, je l’ai testé sous 2000 vu que je ne fais plus de plans de maintenance pour 2005 …
Il faudra que je fasse cela en test sur mon PC perso pour pouvoir poster une requête correcte donc
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
++