Holen Sie sich das Datum der letzten erfolgreichen Auftrag ausgeführt?
Ich habe einen einzigen Schritt den Auftrag, eine gespeicherte Prozedur ausführt. Ich möchte erhalten, das Datum der letzten erfolgreichen Ausführung des Jobs mal so, dass ich nur update ein delta, anstatt die ganze Reihe von Daten.
Nun habe ich den job setup ausführen, einmal jeden Tag, also ich habe ein default-parameter, wenn es null ich ihn an der GETDATE() - 1, also bin ich immer noch die Aktualisierung ein delta, aber das, was ich gerne machen würde, ist das Datum der letzten erfolgreichen Ausführung des Auftrags.
exec dbo.usp_UpdateFrom @LastSuccessfulExecutionTime
Aktuelle Verfahren ist so etwas wie
CREATE PROCEDURE dbo.usp_UpdateFrom
@FromDate datetime = NULL --would like to pass last successful execution time of the job
AS
IF @FromDate IS NULL
SET @FromDate = GETDATE() - 1
-- do stuff
END
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tabellen, die Sie wollen, sind sysjobs und sysjobhistory in
msdb
. Obwohl gewarnt werden! Nur SQL-Server verwaltet eine bestimmte Anzahl von Datensätzen, so dass, wenn es zu viele Arbeitsplätze und die Geschichte ist nicht groß genug, werden Sie am Ende mit der Geschichte.Der folgende code ruft die
job_id
für die angegebene job-name, und fragt die history-Tabelle für die Letzte, erfolgreich beendete ausführen (d.h. Schritt 0, status 1). Wie Sie sehen können, müssen Sie konvertieren Sie das laufen mal wieder zu einem Zeitpunkt, als der SQL-Server speichert es in zwei int-Spalten:Haben Sie einen Blick auf diese Artikel, kann es zeigen Sie in die richtige Richtung. Leider habe ich keine SQL-Server auf meinem Rechner zu Hause kann so nicht testen Sie es aus für Sie!
Benötigen Sie grundsätzlich eine Abfrage der sysjobactivity Tabelle und rufen Sie die Werte aus start_execution_date und stop_execution_date. Sie müssen die job_id, aber ich bin nicht sicher, wo Sie bekommen, dass von.
Ich hoffe, das hilft.
BEARBEITEN
Ok, ich habe etwas mehr Forschung und fand das folgende code-snippet
Seit
sysjobhistory
nur behauptet, eine gewisse Anzahl von Platten, die ich empfehlensysjobactivity
, die behält die Letzte Ausführung "Geschichte" der einzelnen job-und session.HINWEIS:, Wenn ein Auftrag nicht ausgeführt wurde, während der Lebensdauer einer Sitzung, fast alle Werte
null
.AUCH es ist ein system Gespeicherte Prozedur
sp_help_job
, liefert diese Informationen.Es akzeptiert
job_id
,enabled
usw. als Parameter, um 1 oder mehr Datensätze.Anhand der Informationen aus der folgenden threads:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=112427
http://www.sqlservercentral.com/Forums/Topic542581-145-1.aspx
Dies ist, was ich kam mit...
Ich bin nicht besonders wohl dabei, aber ich bevorzuge diese Methode, die job_id über je nach job-name.
Man Zuletzt erfolgreich Aufträge ausführen: