Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CANCEL
Bricht eine Datenbankabfrage ab, die zurzeit ausgeführt wird.
Der CANCEL Befehl benötigt die Prozess- oder Sitzungs-ID der laufenden Abfrage und zeigt eine Bestätigungsmeldung an, um zu überprüfen, ob die Abfrage abgebrochen wurde.
Erforderliche Berechtigungen
Folgende Rechte sind erforderlich fürCANCEL:
Superuser bricht seine eigene Abfrage ab
Superuser bricht die Abfrage eines Benutzers ab
Benutzer mit der CANCEL Berechtigung, die Anfrage eines Benutzers abzubrechen
Benutzer storniert seine eigene Abfrage
Syntax
CANCEL process_id [ 'message' ]
Parameter
- process_id
-
Um eine Abfrage abzubrechen, die in einem Amazon Redshift Redshift-Cluster ausgeführt wird, verwenden Sie die
pid
(Prozess-ID) vonSTV_RECENTS, die der Abfrage entspricht, die Sie stornieren möchten.Um eine Abfrage abzubrechen, die in einer Amazon Redshift Serverless-Arbeitsgruppe ausgeführt wird, verwenden Sie das
session_id
Formular, SYS_QUERY_HISTORY das der Abfrage entspricht, die Sie stornieren möchten. - 'message'
-
Eine optionale Bestätigungsmeldung, die angezeigt wird, wenn der Abbruch der Abfrage abgeschlossen ist. Wenn Sie keine Meldung angeben, zeigt Amazon Redshift die Standardmeldung als Verifizierung an. Sie müssen die Meldung in einfache Anführungszeichen setzen.
Nutzungshinweise
Sie können eine Abfrage nicht stornieren, indem Sie eine Abfrage-ID angeben. Sie müssen die Prozess-ID (PID) oder die Sitzungs-ID der Abfrage angeben. Sie können nur Aufträge abbrechen, die zurzeit von Ihrem Benutzer ausgeführt werden. Superuser können alle Abfragen abbrechen.
Wenn Abfragen in mehreren Sitzungen dieselbe Tabelle sperren, können Sie die Funktion PG_ _ TERMINATE BACKEND verwenden, um eine der Sitzungen zu beenden. Dabei werden alle Transaktionen, die zurzeit in der beendeten Sitzung ausgeführt werden, gezwungen, alle Sperren aufzuheben und für die Transaktionen ein Rollback auszuführen. Führen Sie eine Abfrage für die Systemtabelle STV_LOCKS aus, um die zurzeit vorhandenen Sperren anzuzeigen.
Nach bestimmten internen Ereignissen startet Amazon Redshift möglicherweise eine aktive Sitzung neu und weist eine neue PID zu. Wenn sich das geändert PID hat, erhalten Sie möglicherweise die folgende Fehlermeldung.
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.
Um das Neue zu findenPID, fragen Sie die STL_RESTARTED_SESSIONS Systemtabelle ab und filtern Sie nach der oldpid
Spalte.
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;
Beispiele
Um eine aktuell ausgeführte Abfrage in einem Amazon Redshift Redshift-Cluster abzubrechen, rufen Sie zunächst die Prozess-ID für die Abfrage ab, die Sie abbrechen möchten. Um den Prozess IDs für alle aktuell laufenden Abfragen zu ermitteln, geben Sie den folgenden Befehl ein:
select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);
Überprüfen Sie den Abfragetext, um festzustellen, welche Prozess-ID (PID) der Abfrage entspricht, die Sie abbrechen möchten.
Geben Sie den folgenden Befehl ein, um die Abfrage mit PID 802 abzubrechen:
cancel 802;
Die Sitzung, in der die Abfrage ausgeführt wurde, zeigt die folgende Meldung an:
ERROR: Query (168) cancelled on user's request
168
ist die Abfrage-ID (nicht die Prozess-ID, die für den Abbruch der Abfrage verwendet wurde).
Alternativ können Sie eine benutzerdefinierte Bestätigungsmeldung angeben, die statt der Standardmeldung angezeigt wird. Um eine benutzerdefinierte Nachricht anzugeben, fügen Sie Ihre Nachricht am Ende des CANCEL Befehls in einfache Anführungszeichen ein:
cancel 802 'Long-running query';
Die Sitzung, in der die Abfrage ausgeführt wurde, zeigt die folgende Meldung an:
ERROR: Long-running query