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

Obtenir l'état du travail SQL Server

Pas si difficile. Gardez à l'esprit que SQL Server conserve à tout moment les informations de métadonnées sur les détails qui sont apportés activement au serveur. Je le ferais pour trouver des échecs dans la mesure où vous pourriez créer un proc ou une fonction, l'appeler par plage de dates. J'ai donné un exemple de la requête juste pour le moment :

use msdb;

declare
    @Start int =  cast( convert(varchar,  
            dateadd(ww, datediff(ww, 0, getdate())-1,0)  -- last week starting
            , 112) as int)
,   @End int = cast( convert(varchar,
            getdate()  -- current datetime
            , 112) as int)
;

Select 
    j.name
,   j.description
,   cast( cast(jh.run_date as varchar) + ' ' +  left(jh.run_time, 2) + ':' + substring( cast(jh.run_time as varchar), 3, 2) as datetime) as TimeRan
,   jh.message
,   jh.step_id
,   jh.step_name
from sysjobs j (nolock) 
    join sysjobhistory jh (nolock) on j.job_id = jh.job_id
        and jh.run_date between @Start and @End
        and jh.run_status = 0  -- 0 is failure