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.

Siehe auch:

CREATE TASK, DROP TASK, SHOW TASKS

Syntax

EXECUTE TASK <name>

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.

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.

  • 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.

Beispiele

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

EXECUTE TASK mytask;
Zurück zum Anfang