Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Vérification de l'historique du plan de maintenance SQL Server pour le succès ou l'échec

Selon la suggestion de Nathan, j'ai exécuté le profileur SQL et compilé ces requêtes en une seule pour répondre à mes besoins.

Cette requête donnera le statut de l'exécution la plus récente de tout plan de maintenance incluant la base de données actuelle :

SELECT
    mp.name AS [MTX Plan Name],
    msp.subplan_name AS [Sub Plan Name],    
    mpl.start_time AS [JobStart],
    mpl.end_time AS [JobEnd],
    mpl.succeeded AS [JobSucceeded]
FROM
    msdb.dbo.sysmaintplan_plans mp
    INNER JOIN msdb.dbo.sysmaintplan_subplans msp ON mp.id = msp.plan_id
    INNER JOIN msdb.dbo.sysmaintplan_log mpl ON msp.subplan_id = mpl.subplan_id
        AND mpl.task_detail_id = -- Get the most recent run for this database
            (SELECT TOP 1 ld.task_detail_id 
            FROM msdb.dbo.sysmaintplan_logdetail ld
            WHERE ld.command LIKE ('%['+db_name()+']%')
            ORDER BY ld.start_time DESC)

Cela fonctionne mieux avec les plans de maintenance générés par l'assistant. Les plans ad hoc n'incluent pas toujours la commande de filtrage. Mais la liaison des tables fonctionne toujours.