Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
CANCEL
Annulla una query del database attualmente in esecuzione.
Il CANCEL comando richiede l'ID di processo o l'ID di sessione della query in esecuzione e visualizza un messaggio di conferma per verificare che la query sia stata annullata.
Privilegi richiesti
Di seguito sono riportati i privilegi richiesti per: CANCEL
Utente con privilegi avanzati che annulla la propria query
Utente con privilegi avanzati che annulla la query di un utente
Utenti con il CANCEL privilegio di annullare la richiesta di un utente
Utente che annulla la propria query
Sintassi
CANCEL process_id [ 'message' ]
Parametri
- process_id
-
Per annullare una query in esecuzione in un cluster Amazon Redshift, utilizza il
pid
(Process ID) corrispondente alla query che desideri annullare. STV_RECENTSPer annullare una query in esecuzione in un gruppo di lavoro Serverless Amazon Redshift, utilizza il
session_id
modulo SYS_QUERY_HISTORY corrispondente alla query che desideri annullare. - 'message'
-
Messaggio di conferma facoltativo che viene visualizzato al termine dell'annullamento della query. Se non si specifica un messaggio, Amazon Redshift visualizza il messaggio predefinito come verifica. È necessario racchiudere il messaggio tra virgolette singole.
Note per l'utilizzo
Non è possibile annullare una query specificando un ID di query; è necessario specificare l'ID di processo (PID) o l'ID di sessione della query. Puoi annullare solo le query attualmente eseguite dall'utente. Gli utenti con privilegi avanzati possono annullare tutte le query.
Se le query in più sessioni contengono blocchi sulla stessa tabella, è possibile utilizzare la funzione PG_ _ TERMINATE BACKEND per terminare una delle sessioni. Questa operazione forza qualsiasi transazione attualmente in esecuzione nella sessione terminata al fine di rilasciare tutti i blocchi ed eseguire il rollback della transazione. Per visualizzare i blocchi correnti, eseguire una query sulla tabella di sistema STV_LOCKS.
In seguito a determinati eventi interni, Amazon Redshift potrebbe riavviare una sessione attiva e assegnarne una nuova. PID Se PID è cambiato, potresti ricevere il seguente messaggio di errore.
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.
Per trovare il nuovoPID, interroga la tabella di STL_RESTARTED_SESSIONS sistema e filtra sulla oldpid
colonna.
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;
Esempi
Per annullare una query attualmente in esecuzione in un cluster Amazon Redshift, recupera innanzitutto l'ID del processo per la query che desideri annullare. Per determinare il processo IDs per tutte le query attualmente in esecuzione, digita il seguente comando:
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);
Controllate il testo della query per determinare quale processo id (PID) corrisponde alla query che desiderate annullare.
Digitate il comando seguente per utilizzare PID 802 per annullare la query:
cancel 802;
La sessione in cui è stata eseguita la query visualizza il seguente messaggio:
ERROR: Query (168) cancelled on user's request
dove 168
è l'ID query (non l'ID processo utilizzato per annullare la query).
In alternativa, puoi specificare un messaggio di conferma personalizzato da visualizzare al posto del messaggio predefinito. Per specificare un messaggio personalizzato, includi il messaggio tra virgolette singole alla fine del CANCEL comando:
cancel 802 'Long-running query';
La sessione in cui è stata eseguita la query visualizza il seguente messaggio:
ERROR: Long-running query