EXECUTE TASK

Löst manuell eine asynchrone Einzelausführung einer geplanten Aufgabe aus (entweder eine eigenständige Aufgabe oder die Stammaufgabe in einem DAG (Directed Acyclic Graph) von Aufgaben), unabhängig von dem für die Aufgabe definierten Zeitplan.

Die erfolgreiche Ausführung einer Stammaufgabe löst eine kaskadierende Ausführung der untergeordneten Aufgaben im DAG aus, sobald deren vorhergehende Aufgabe abgeschlossen ist, so als ob die Stammaufgabe nach ihrem definierten Zeitplan ausgeführt worden wäre.

Außerdem können Sie manuell das erneute Ausführen einer zuvor fehlgeschlagenen Aufgabe auslösen.

Siehe auch:

CREATE TASK, DROP TASK, SHOW TASKS

Syntax

EXECUTE TASK <name>

EXECUTE TASK <name> RETRY LAST
Copy

Parameter

name

Bezeichner für die auszuführende eigenständige Aufgabe bzw. Stammaufgaben. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.

RETRY LAST

Führen Sie die letzte fehlgeschlagene Aufgabe von DAG von Aufgaben erneut aus, indem Sie name an der Stelle neu starten, an der die Aufgaben fehlgeschlagen sind.

Um eine Aufgabe erneut auszuführen, müssen die folgenden Bedingungen erfüllt sein:

  • Die letzte Ausführung des DAG muss sich im Status FAILED oder CANCELED befinden.

  • Der DAG darf seit der letzten Ausführung nicht verändert worden sein.

  • Der DAG muss in den letzten 14 Tagen ausgeführt oder erneut versucht worden sein.

Sie können den Aufgabenverlauf entweder über die Tabellenfunktion TASK_HISTORY oder über den Snowsight-Aufgabenverlauf einsehen.

Bemerkung

RETRY LAST erstellt eine neue Task-Graph-Ausführung, die mit der Ausführung der letzten fehlgeschlagenen Aufgabe(n) beginnt.

Insbesondere werden alle FAILED- oder CANCELED-Aufgabenausführungen sofort erneut ausgeführt, und die zugehörigen untergeordneten Aufgaben werden geplant, wenn alle ihre Vorgänger erfolgreich ausgeführt wurden.

Außerdem hat die neue DAG-Ausführung, die durch den Wiederholungsversuch erzeugt wird, einen ATTEMPT NUMBER-Wert, der um eins größer ist als bei der vorherigen fehlgeschlagenen Task-Graph-Ausführung, und denselben GRAPH_RUN_GROUP_ID-Wert wie die wiederholte oder ursprüngliche DAG-Ausführung.

Nutzungshinweise

  • Die Ausführung einer Aufgabe erfordert entweder die Berechtigung OWNERSHIP oder OPERATE für diese Aufgabe.

    Wenn mit dem EXECUTE TASK-Befehl eine Aufgabenausführung ausgelöst wird, überprüft Snowflake, ob die Rolle mit der Berechtigung OWNERSHIP für die Aufgabe auch die Berechtigung USAGE für das der Aufgabe zugewiesene Warehouse sowie die globale Berechtigung EXECUTE TASK hat. Wenn nicht, wird ein Fehler erzeugt.

    Aufgaben werden immer mit den Berechtigungen der Rolle des ursprünglichen Eigentümers ausgeführt, selbst wenn eine andere Rolle mit der OPERATE-Berechtigung EXECUTE TASK zum Ausführen der Aufgabe verwendet.

  • Mit dem SQL-Befehl kann nur eine eigenständige Aufgabe oder die Stammaufgabe im einem DAG ausgeführt werden. Wenn eine untergeordnete Aufgabe eingegeben wird, gibt der Befehl einen Benutzerfehler zurück.

  • Durch die manuelle Ausführung einer eigenständigen oder Stammaufgabe wird eine Version der Aufgabe erstellt. Die eigenständige Aufgabe bzw. der gesamte DAG schließt seine Ausführung mit dieser Version ab. Weitere Informationen zu Aufgabenversionen finden Sie unter Versionierung von Ausführungen.

  • Eine angehaltene Stammaufgabe wird ohne Fortsetzung der Aufgabe ausgeführt. Es besteht keine Notwendigkeit, vor Ausführung dieses SQL-Befehls die Stammaufgabe explizit fortzusetzen. Allerdings setzt EXECUTE TASK nicht automatisch untergeordnete Aufgaben in einem DAG fort. Der Befehl überspringt alle untergeordneten Aufgaben, die angehalten sind.

    Um alle abhängigen Aufgaben, die in einem DAG an eine Stammaufgabe gebunden sind, rekursiv fortzusetzen, fragen Sie die Funktion SYSTEM$TASK_DEPENDENTS_ENABLE ab, anstatt jede Aufgabe einzeln zu aktivieren (mit ALTER TASK … RESUME).

    Beim Testen neuer oder geänderter DAGs empfiehlt es sich, die Stammaufgabe so einzustellen, dass sie zwar nach dem vorgesehenen Zeitplan der Produktionsumgebung ausgeführt wird, aber im angehaltenen Status belassen wird. Wenn Sie den DAG erfolgreich getestet haben, setzen Sie die Stammaufgabe fort. Beachten Sie, dass Sie alle zum Testen angehaltenen untergeordneten Aufgaben im DAG wieder fortsetzen müssen, denn andernfalls werden sie bei Ausführung des DAG übersprungen.

  • Wenn die Stammaufgabe gerade ausgeführt wird (d. h. in der TASK_HISTORY-Ausgabe den Status EXECUTING hat), plant der EXECUTE TASK-Befehl eine weitere Ausführung der Aufgabe, die sofort nach Beendigung der aktuellen Ausführung gestartet wird.

  • Wenn die Stammaufgabe gerade geplant ist (d. h. in der TASK_HISTORY-Ausgabe den Status SCHEDULED hat), wird die geplante Ausführung wie üblich durch die angeforderte Ausführung ersetzt, wobei der aktuelle Zeitstempel als geplante Zeit gilt. Wenn jedoch die geplante Zeit verstrichen ist (aber die Aufgabe noch nicht in den Status EXECUTING übergegangen ist), dann erfolgt die geplante Ausführung wie üblich. Das heißt, die geplante Ausführung wird nicht durch die angeforderte Ausführung ersetzt.

  • Der ALLOW_OVERLAPPING_EXECUTION-Parameter einer Stammaufgabe bestimmt, ob sich überlappende Instanzen im DAG zulässig sind. Das Ausführungsverhalten der angeforderten Aufgaben unterscheidet sich je nach Parameterwert:

    ALLOW_OVERLAPPING_EXECUTION = FALSE (Standardwert)

    Wenn derzeit keine Instanz des DAG ausgeführt wird, wird mit dem Befehl EXECUTE TASK eine neue Ausführung des DAG geplant und sofort gestartet.

    Wenn die Stammaufgabe oder eine beliebige untergeordnete Aufgabe im DAG gerade ausgeführt wird (d. h. in der TASK_HISTORY-Ausgabe den Status EXECUTING hat), plant der EXECUTE TASK-Befehl eine weitere Ausführung des DAG, die sofort nach Beendigung der letzten Aufgabe im DAG gestartet wird. Das heißt, die aktuelle Instanz des DAG muss ihre Ausführung beenden, bevor die angeforderte Aufgabe beginnen kann.

    Wenn die Stammaufgabe gerade geplant ist (d. h. in der TASK_HISTORY-Ausgabe den Status SCHEDULED hat), wird die geplante Ausführung durch die angeforderte Ausführung ersetzt, wobei der aktuelle Zeitstempel als geplante Zeit gilt. Wenn jedoch die geplante Zeit verstrichen ist (aber die Aufgabe noch nicht in den Status EXECUTING übergegangen ist), dann erfolgt die Ausführung wie geplant. Das heißt, die geplante Ausführung wird nicht durch die angeforderte Ausführung ersetzt.

    ALLOW_OVERLAPPING_EXECUTION = TRUE

    Wenn derzeit keine Instanz des DAG ausgeführt wird oder nur untergeordnete Aufgaben des DAG in einer Instanz ausgeführt werden, wird mit dem Befehl EXECUTE TASK eine neue Ausführung des DAG geplant und sofort gestartet.

    Wenn die Stammaufgabe gerade in einer Instanz des DAG ausgeführt wird, plant der Befehl EXECUTE TASK eine weitere Ausführung des DAG, die sofort nach Beendigung der aktuellen Ausführung der Stammaufgabe gestartet wird.

    Wenn die Stammaufgabe in einer Instanz des DAG gerade geplant ist (d. h. in der TASK_HISTORY-Ausgabe den Status SCHEDULED hat), wird die geplante Ausführung wie üblich durch die angeforderte Ausführung ersetzt, wobei der aktuelle Zeitstempel als geplante Zeit gilt. Wenn jedoch die geplante Zeit verstrichen ist (aber die Aufgabe noch nicht in den Status EXECUTING übergegangen ist), dann erfolgt die Ausführung wie geplant. Das heißt, die geplante Ausführung wird nicht durch die angeforderte Ausführung ersetzt.

  • Beachten Sie, dass Aufrufe des EXECUTE TASK-Befehls synchron verarbeitet werden, während Aufgabenausführungen asynchrone Operationen sind.

  • Die durch diesen SQL-Befehl ausgelösten Aufgabenausführungen verwenden die Aufgabenversion, die bei der Ausführung des Befehls aktuell war. Wenn eine Aufgabe nach der Ausführung des Befehls, aber vor Beginn der Ausführung geändert wird, werden die Änderungen erst bei der nächsten geplanten Ausführung übernommen.

    Wenn dieser SQL-Befehl während der Ausführung einer Aufgabe gestartet wird, werden alle Befehlsausführungen außer der letzten ignoriert. Bei Start der nächsten Ausführung wird die Version der Aufgabe verwendet, die bei der letzten Ausführung aktuell war.

  • Wenn eine Aufgabe mit einem unerwarteten Fehler fehlschlägt, können Sie eine Benachrichtigung über den Fehler erhalten. Weitere Informationen zum Konfigurieren von Aufgabenfehlerbenachrichtigungen finden Sie unter Aktivieren von Fehlerbenachrichtigungen für Aufgaben.

  • Zum Anzeigen der Aufgabeninformationen haben Sie folgende Möglichkeiten:

    • Öffnen Sie Snowsight, und wählen Sie Activity » Task History aus.

    • Rufen Sie die Funktion COMPLETE_TASK_GRAPHS auf, und prüfen Sie die Ergebnisse.

Beispiele

Manuelles Auslösen der Ausführung einer Aufgabe namens mytask:

EXECUTE TASK mytask;
Copy