SVL_STORED_PROC_MESSAGES - Amazon Redshift

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à.

SVL_STORED_PROC_MESSAGES

Puoi eseguire query sulla vista di sistema SVL_STORED_PROC_MESSAGES per ottenere informazioni sui messaggi delle procedure archiviate. I messaggi generati vengono registrati anche se la chiamata alla procedura archiviata viene annullata. Ogni chiamata di procedura archiviata riceve un'ID query. Per ulteriori informazioni su come impostare il livello minimo per i messaggi registrati, consultare stored_proc_log_min_messages.

SVL_STORED_PROC_MESSAGES è visibile a tutti gli utenti. Gli utenti con privilegi avanzati visualizzano tutte le righe; gli utenti regolari visualizzano solo i propri dati. Per ulteriori informazioni, consulta Visibilità dei dati nelle tabelle e nelle viste di sistema.

Alcuni o tutti i dati di questa tabella sono definiti anche nella vista di monitoraggio SYS SYS_PROCEDURE_MESSAGES. I dati nella vista di monitoraggio SYS sono formattati in modo da essere più facili da usare e comprendere. Ti consigliamo di utilizzare la vista di monitoraggio SYS per le query.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
userid integer L'ID dell'utente i quali privilegi erano stati utilizzati per eseguire l'istruzione. Se questa chiamata è stata nidificata in una procedura archiviata SECURITY DEFINER, questo è l'ID utente del proprietario di quella procedura archiviata.
session_userid integer L'ID dell'utente che ha creato la sessione ed è l'intermediario della chiamata di procedura archiviata di primo livello.
pid integer L'ID di processo.
xid bigint L'ID della transazione della query della chiamata di procedura.
query integer L'ID query della chiamata di procedura.
recordtime timestamp L'ora di generazione del messaggio in UTC.
loglevel integer Il valore numerico del livello di log del messaggio generato. Valori possibili: 20 – per LOG 30 – per INFO 40 – per NOTICE 50 – per WARNING 60 – per EXCEPTION
loglevel_text character(10) Il livello di log che corrisponde al valore numerico in loglevel. Valori possibili: LOG, INFO, NOTICE, WARNING ed EXCEPTION.
message character(1024) Il testo del messaggio generato.
linenum integer Il numero di riga dell'istruzione generata.
querytext character(500) Il testo effettivo della query della chiamata di procedura.
etichetta character(320) Il nome del file utilizzato per eseguire la query o un'etichetta definita con un comando SET QUERY GROUP. Se la query non è basata su file o non è impostato il parametro QUERY_GROUP, questo valore del campo è predefinito.
aborted integer Se una procedura archiviata è stata interrotta dal sistema o annullata dall'utente, questa colonna contiene 1. Se la chiamata è stata completata, questa colonna contiene 0.
message_xid bigint L'ID della transazione del messaggio generato.

Query di esempio

Le seguenti istruzioni SQL mostrano come utilizzare SVL_STORED_PROC_MESSAGES per esaminare i messaggi generati.

-- Create and run a stored procedure CREATE OR REPLACE PROCEDURE test_proc1(f1 int) AS $$ BEGIN RAISE INFO 'Log Level: Input f1 is %',f1; RAISE NOTICE 'Notice Level: Input f1 is %',f1; EXECUTE 'select invalid'; RAISE NOTICE 'Should not print this'; EXCEPTION WHEN OTHERS THEN raise exception 'EXCEPTION level: Exception Handling'; END; $$ LANGUAGE plpgsql; -- Call this stored procedure CALL test_proc1(2); -- Show raised messages with level higher than INFO SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel > 30 AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277196 | 40 | NOTICE | Notice Level: Input f1 is 2 | 1 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1 (2 rows) -- Show raised messages at EXCEPTION level SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel_text = 'EXCEPTION' AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1

Le seguenti istruzioni SQL mostrano come utilizzare SVL_STORED_PROC_MESSAGES per esaminare i messaggi generati con l'opzione SET durante la creazione di una procedura archiviata. Poiché test_proc() dispone di un livello di log minimo di NOTICE, solo i messaggi di livello NOTICE, WARNING ed EXCEPTION vengono registrati in SVL_STORED_PROC_MESSAGES.

-- Create a stored procedure with minimum log level of NOTICE CREATE OR REPLACE PROCEDURE test_proc() AS $$ BEGIN RAISE LOG 'Raise LOG messages'; RAISE INFO 'Raise INFO messages'; RAISE NOTICE 'Raise NOTICE messages'; RAISE WARNING 'Raise WARNING messages'; RAISE EXCEPTION 'Raise EXCEPTION messages'; RAISE WARNING 'Raise WARNING messages again'; -- not reachable END; $$ LANGUAGE plpgsql SET stored_proc_log_min_messages = NOTICE; -- Call this stored procedure CALL test_proc(); -- Show the raised messages SELECT query, recordtime, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE query = 149 ORDER BY recordtime; query | recordtime | loglevel_text | message | aborted -------+----------------------------+---------------+--------------------------+--------- 149 | 2020-03-16 21:51:54.847627 | NOTICE | Raise NOTICE messages | 1 149 | 2020-03-16 21:51:54.84766 | WARNING | Raise WARNING messages | 1 149 | 2020-03-16 21:51:54.847668 | EXCEPTION | Raise EXCEPTION messages | 1 (3 rows)