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% 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:
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% 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.
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.
Tags und Links sql-server sql-server-agent