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.
Bricht eine Datenbankabfrage ab, die zurzeit ausgeführt wird.
Der Befehl CANCEL 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
Für CANCEL sind folgende Berechtigungen erforderlich:
-
Superuser bricht seine eigene Abfrage ab
-
Superuser bricht die Abfrage eines Benutzers ab
-
Benutzer mit der Berechtigung CANCEL bricht die Abfrage eines Benutzers ab
-
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.
Im Anschluss an bestimmte interne Ereignisse startet Amazon Redshift möglicherweise eine aktive Sitzung neu und weist eine neue PID zu. Wenn die PID geändert wurde, 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 die neue PID zu suchen, führen Sie eine Abfrage für die Systemtabelle STL_RESTARTED_SESSIONS aus und filtern nach der Tabelle oldpid
.
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 Text der Abfrage, um festzustellen, welche Prozess-ID (POD) der Abfrage entspricht, die Sie abbrechen möchten.
Geben Sie den folgenden Befehl ein, um PID 802 zu verwenden und diese Abfrage 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 Meldung anzugeben, setzen Sie die Meldung am Ende des Befehls CANCEL (ABBRECHEN) in Anführungszeichen:
cancel 802 'Long-running query';
Die Sitzung, in der die Abfrage ausgeführt wurde, zeigt die folgende Meldung an:
ERROR: Long-running query