[FIXED] So verschieben Sie einen verzögerten Job in Hangfire mit SQL-Skript

Ausgabe

Wir verwenden Hangfire v.7 seit langem mit SQL Server und haben viele verzögerte Jobs. Ich möchte diejenigen finden, die in einem bestimmten Zeitraum ausgeführt werden sollen (z. B. von 2030-01-01T01:00:00 bis 2030-01-01T03:00:00) und sie um N Stunden verschieben. Ich gehe davon aus, dass es einige Spalten in der Hangfire-Datenbank gibt, die die Ausführungszeit jedes Jobs angeben. Ist es gültig? Wie kann ich die Ausführungszeit verzögerter Jobs über ein SQL-Skript ändern?

Lösung

Ich habe den Hangfire-Quellcode gelesen und den Prozess ab verfolgt BackgroundJob.Schedule, der die API-Methode zum Erstellen eines neuen verzögerten Jobs ist, bis die Änderungen an die DB übertragen werden. Dies ist das DB-Schema:

DB-Schema

Jeder verzögerte Job hat einen Eintrag in der [Job]Tabelle und seine Ausführungsdaten werden in der Tabelle gespeichert [State]. Ein nicht ausgeführter geplanter Job hat einen Statuseintrag wie diesen:
Staatsrekord

Die [Data]Spalte enthält Planungsdetails im JSON-Format. Der Wert von EnqueueAtgibt an, wann der Job mit der Ausführung im UNIX-Zeitstempel beginnen soll. Für SQL Server v.16 oder höher kann ein Skript wie dieses nützlich sein:

UPDATE [State] 
SET JSON_MODIFY([Data], '$.EnqueueAt', '0000000000000'/*put your time stamp here*/)
WHERE condition


Beantwortet von –
ThirdDeveloper


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like