Datum des letzten erfolgreichen Joblaufs abrufen?

8

Ich habe einen Einzelschrittjob, der eine gespeicherte Prozedur ausführt. Ich möchte das Datum der letzten erfolgreichen Jobausführungszeit erhalten, so dass ich nur ein Delta anstelle des gesamten Datensatzes aktualisieren kann.

Im Moment habe ich den Job so eingerichtet, dass er jeden Tag ausgeführt wird, also habe ich einen Standard-Parameter. Wenn er null ist, setze ich ihn auf GETDATE () - 1, aber ich aktualisiere immer noch ein Delta, aber was ich möchte do setzt das Datum auf die letzte erfolgreiche Ausführung des Jobs.

%Vor%

Die aktuelle Prozedur ist etwas wie

%Vor%     
Dave 21.01.2010, 20:57
quelle

5 Antworten

0

Informationen aus den folgenden Threads verwenden:

Ссылка Ссылка

Das ist, was ich erfunden habe ...

%Vor%

Ich bin nicht besonders damit einverstanden, aber ich bevorzuge diese Methode, um die Job-ID abhängig vom Job-Namen zu bekommen.

    
Dave 22.01.2010, 15:46
quelle
14

Die gewünschten Tabellen sind sysjobs und sysjobhistory in msdb . Seien Sie gewarnt! SQL Server verwaltet nur eine bestimmte Anzahl von Datensätzen. Wenn also zu viele Aufträge vorhanden sind und der Verlauf nicht groß genug ist, haben Sie keine Historie.

Der folgende Code ruft das job_id für den angegebenen Jobnamen ab und fragt die Verlaufstabelle nach dem letzten erfolgreich abgeschlossenen Lauf ab (d. h. Schritt 0, Status 1). Wie Sie sehen können, müssen Sie die Laufzeit zurück in ein Datum konvertieren, da SQL Server sie in zwei int-Spalten speichert:

%Vor%     
Nick Kavadias 22.01.2010 04:52
quelle
2

Schauen Sie sich diesen Artikel an, er könnte Sie in die richtige Richtung weisen. Leider habe ich keinen SQL Server auf meinem Heimcomputer, also kann ich es nicht für Sie testen!

Sie müssen im Grunde die sysjobactivity-Tabelle abfragen und die Werte von start_execution_date und stop_execution_date abrufen. Sie benötigen die Job-ID, aber ich bin mir nicht sicher, woher Sie das bekommen.

Ich hoffe, das hilft.

BEARBEITEN Ok, ich habe ein wenig mehr recherchiert und das folgende Code-Snippet gefunden:

%Vor%     
Dave7896 21.01.2010 21:16
quelle
2

Da sysjobhistory nur eine bestimmte Anzahl von Datensätzen verwaltet, empfehle ich die Verwendung von sysjobactivity , wodurch der letzte Ausführungsverlauf jedes Jobs und jeder Sitzung beibehalten wird.

%Vor%

HINWEIS: Wenn ein Job während der Laufzeit einer Sitzung nicht ausgeführt wurde, sind fast alle Werte null .

ALSO Es gibt ein System Gespeicherte Prozedur sp_help_job , die diese Informationen zurückgibt. Es akzeptiert job_id , enabled usw. als Parameter, um 1 oder mehr Datensätze zurückzugeben.

    
kpull1 16.11.2016 12:12
quelle
0

Um die letzten erfolgreich ausgeführten Jobs zu erhalten:

%Vor%     
selvan 19.09.2017 10:25
quelle

Tags und Links