EXECUTE TASK

Löst manuell eine asynchrone Einzelausführung einer geplanten Aufgabe aus (entweder eine eigenständige Aufgabe oder die Stammaufgabe in einem Aufgabenstrukturbaum), 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 Strukturbaum 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

Unter diesem Thema:

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 Aufgabenstrukturbaum 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 Aufgabenstrukturbaum 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 im Strukturbaum fort. Der Befehl überspringt alle untergeordneten Aufgaben, die angehalten sind.

    Um alle abhängigen Aufgaben, die in einem einfachen Aufgabenstrukturbaum 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 Aufgabenstrukturbäume 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 Aufgabenstrukturbaum erfolgreich getestet haben, setzen Sie die Stammaufgabe fort. Beachten Sie, dass Sie alle zum Testen angehaltenen untergeordneten Aufgaben im Strukturbaum wieder fortsetzen aufnehmen müssen, denn andernfalls werden sie bei Ausführung des Aufgabenstrukturbaums ü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 des Aufgabenstrukturbaums zulässig sind. Das Ausführungsverhalten der angeforderten Aufgaben unterscheidet sich je nach Parameterwert:

    ALLOW_OVERLAPPING_EXECUTION = FALSE (Standardwert)

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

    Wenn die Stammaufgabe oder eine beliebige untergeordnete Aufgabe im Strukturbaum 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 Aufgabenstrukturbaums, die sofort nach Beendigung der letzten Aufgabe im Strukturbaum gestartet wird. Das heißt, die aktuelle Instanz des Aufgabenstrukturbaums 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 Aufgabenstrukturbaums ausgeführt wird oder nur untergeordnete Aufgabe des Strukturbaums in einer Instanz ausgeführt werden, wird mit dem Befehl EXECUTE TASK eine neue Ausführung des Aufgabenstrukturbaums geplant und sofort gestartet.

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

    Wenn die Stammaufgabe in einer Instanz des Aufgabenstrukturbaums 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