Kategorien:

Systemfunktionen (Systemsteuerung)

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS

Bricht eine Ausführung der angegebenen Aufgabe ab, für die das System bereits mit der Verarbeitung begonnen hat (d. h. eine Ausführung mit Status EXECUTING in der TASK_HISTORY-Ausgabe).

Syntax

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS( '<task_name>' )
Copy

Argumente

task_name

Name der Aufgabe.

Nutzungshinweise

  • Dieser Befehl kann nur vom Aufgabeneigentümer (d. h. der Rolle mit der Berechtigung OWNERSHIP für die Aufgabe) oder einer Rolle mit der OPERATE-Berechtigung für die Aufgabe aufgerufen werden.

  • task_name ist eine Zeichenfolge und muss daher in einfache Anführungszeichen gesetzt werden:

    • Der gesamte Name muss in einfache Anführungszeichen gesetzt werden, einschließlich der Datenbank und des Schemas (wenn der Name vollständig qualifiziert ist); zum Beispiel: '<db>.<schema>.<task_name>'.

    • Wenn der Aufgabenname zwischen Groß- und Kleinschreibung unterscheidet bzw. Sonderzeichen oder Leerzeichen enthält, sind doppelte Anführungszeichen erforderlich, damit Groß-/Kleinschreibung oder die Zeichen korrekt verarbeitet werden. Die doppelten Anführungszeichen müssen in einfache Anführungszeichen eingeschlossen werden; zum Beispiel: '"<task_name>"'.

  • Diese Funktion gibt eine Erfolgsmeldung zurück, bevor die aktuelle Ausführung der angegebenen Aufgabe tatsächlich abgebrochen wird.

  • Wenn die aktuelle Ausführung der angegebenen Aufgabe fast abgeschlossen ist, bricht diese Funktion die Ausführung möglicherweise nicht ab.

  • Diese Funktion bricht nur die aktuelle Ausführung der angegebenen Aufgabe ab. Es könnten noch weitere Aufgaben eines Task-Graphen ausgeführt werden, die diese Aufgabe enthalten. Um deren Ausführung abzubrechen, müssen Sie diese Funktion aufrufen und den Namen jeder weiteren untergeordneten Aufgabe separat angeben.

  • Wenn eine Aufgabe durch CREATE OR REPLACE TASK ersetzt wird, kann diese Funktion die laufenden Ausführungen der vorherigen Aufgabe nicht abbrechen.

    So stoppen Sie eine laufende Aufgabenausführung, nachdem Sie sie durch CREATE OR REPLACE TASK ersetzt haben:

    1. Suchen Sie die Abfrage-ID der laufenden Ausführung; zum Beispiel:

      select name, query_id, state, scheduled_time, error_message
      from table(information_schema.task_history(task_name => 'my_task'));
      
      Copy
    2. Brechen Sie die Abfrage ab, indem Sie die Funktion SYSTEM$CANCEL_QUERY mit der Abfrage-ID verwenden, zum Beispiel:

      select system$cancel_query('query_id');
      
      Copy
    3. Überwachen Sie die Aufgabenausführung einige Sekunden lang, bis der Abbruch abgeschlossen ist, zum Beispiel:

      select name, query_id, state, scheduled_time, error_message
      from table(information_schema.task_history(task_name => 'my_task'));
      
      Copy
  • Um zu prüfen, ob die Ausführung einer Aufgabe abgebrochen oder abgeschlossen wurde oder ob sich derzeit noch untergeordnete Aufgaben in Ausführung befinden, fragen Sie die Funktion TASK_HISTORY ab.

  • Um zu verhindern, dass zukünftige Ausführungen der Aufgabe gestartet werden, empfehlen wir, die Aufgabe zunächst anzuhalten (mit ALTER TASK … SUSPEND) und dann diese Funktion auszuführen.

    Beachten Sie, dass es derzeit einige Minuten dauert, bis die Snowflake-Clouddienste die Ausführung dieser Aufgabe erneut planen, wenn die Aufgabe bei Ausführung der Funktion nicht angehalten wird.

Beispiele

Bricht die aktuelle Ausführung einer Aufgabe mit einem Namen ab, bei dem die Groß-/Kleinschreibung nicht beachtet wird:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema.mytask');
Copy

Bricht die aktuelle Ausführung einer Aufgabe mit einem Namen ab, bei dem die Groß-/Kleinschreibung nicht beachtet wird:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema."myTask"');
Copy