Wenn Sie planen, dass ein SQL Server-Job alle X Minuten ausgeführt wird und der vorherige Aufruf nicht beendet wird, bevor die Anzahl der Minuten abgelaufen ist, überspringt er den Lauf, da er bereits ausgeführt wird, oder führt zwei Instanzen aus von dem Job, der die gleichen Schritte macht?Überspringt ein SQL Server-Auftrag einen geplanten Lauf, wenn er bereits ausgeführt wird?
Antwort
Der SQL Server-Agent überprüft, ob der Job bereits ausgeführt wird, bevor eine neue Iteration gestartet wird. Wenn Sie einen Job mit langer Laufzeit haben und dessen Zeitplan angezeigt wird, wird er bis zum nächsten Intervall übersprungen.
Sie können dies für sich selbst ausprobieren. Wenn Sie versuchen, einen Job zu starten, der bereits ausgeführt wird, erhalten Sie einen entsprechenden Fehler.
Ich bin mir ziemlich sicher, es wird es überspringen, wenn es läuft.
Welche Version von SQL Server verwenden Sie? Das scheint eine ziemlich einfache Sache zu sein, die man testen kann. Richten Sie einen Job mit einem WAITFOR ein, der eine einzelne Zeile in eine Tabelle einfügt und den Job so konfiguriert, dass er zweimal hintereinander ausgeführt wird (kürzer als WAITFOR DELAY).
Beim Ausführen eines solchen Tests in SQL Server 2005 übersprang er den Lauf, der überlappt wurde.
Ich überlegte, dies zu tun - aber es schien einfacher zu googeln und .. voila – Paul
Ehrfürchtig, genau das wollte ich wissen. Ich habe einen E-Mail-Checker, der manchmal eine Weile braucht, um große E-Mails herunterzuladen. Da jede Minute ausgeführt wird, ist es sehr wichtig, dass eine zweite Instanz des Jobs nicht gestartet wird, wenn der erste noch nicht abgeschlossen ist. –
Gibt es eine Möglichkeit, dies zu erreichen, ich meine, das Überspringen zu vermeiden und eine andere Instanz des Jobs zu starten? Oder könnte man einfach einen anderen SQL-Job erstellen? Danke –