Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obter status de trabalho do SQL Server


Não é tão difícil. Lembre-se de que o SQL Server mantém informações de metadados o tempo todo sobre quais detalhes estão sendo feitos no servidor ativamente. Eu faria isso para encontrar falhas em que você pudesse criar um proc ou função, chamá-lo por intervalo de datas. Eu dei um exemplo apenas da consulta por enquanto:
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