sql >> Base de Datos >  >> RDS >> Sqlserver

Comprobación del historial del plan de mantenimiento de SQL Server para comprobar el éxito o el fracaso

Según la sugerencia de Nathan, ejecuté el generador de perfiles de SQL y compilé esas consultas en una sola para satisfacer mis necesidades.

Esta consulta dará el estado de la ejecución más reciente de cualquier plan de mantenimiento que incluya la base de datos actual:

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)

Esto funciona mejor con planes de mantenimiento generados por el asistente. Los planes ad-hoc no siempre incluyen el comando de filtrado. Pero la vinculación de tablas aún funciona.