SVL_STORED_PROC_MESSAGES - Amazon Redshift

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.

SVL_STORED_PROC_MESSAGES

Sie können die Systemansicht SVL_STORED_PROC_MESSAGES abfragen, um Informationen über Meldungen zu gespeicherten Prozeduren abzurufen. Ausgegebene Meldungen werden protokolliert, auch wenn der Aufruf der gespeicherten Prozedur abgebrochen wird. Jeder Aufruf einer gespeicherten Prozedur erhält eine Abfrage-ID. Weitere Informationen zum Festlegen der Mindestebene für protokollierte Meldungen finden Sie unter stored_proc_log_min_messages.

SVL_STORED_PROC_MESSAGES ist für alle Benutzer sichtbar. Superuser können alle Zeilen sehen; reguläre Benutzer können nur ihre eigenen Daten sehen. Weitere Informationen finden Sie unter Sichtbarkeit der Daten in Systemtabellen und Ansichten.

Einige oder alle Daten in dieser Tabelle sind auch in der SYS-Überwachungsansicht SYS_PROCEDURE_MESSAGES zu finden. Die Daten in der SYS-Überwachungsansicht sind so formatiert, dass sie leichter verwendbar und besser verständlich sind. Wir empfehlen Ihnen, für Ihre Abfragen die SYS-Überwachungsansicht zu verwenden.

Tabellenspalten

Spaltenname Datentyp Beschreibung
userid integer Die ID des Benutzers, dessen Berechtigungen zum Ausführen der Anweisung verwendet wurden. Wenn dieser Aufruf innerhalb einer gespeicherten SECURITY DEFINER-Prozedur eingebunden war, dann ist dies die Benutzer-ID des Besitzers dieser gespeicherten Prozedur.
session_userid integer Die ID des Benutzers, der die Sitzung erstellt hat und der der Aufrufer des Aufrufs der gespeicherten Prozedur auf oberster Ebene ist.
pid integer Die Prozess-ID.
xid bigint Die Transaktions-ID der Prozeduraufrufabfrage.
query integer Die Abfrage-ID des Prozeduraufrufs.
recordtime timestamp Die Uhrzeit in UTC, zu der die Meldung ausgegeben wurde.
loglevel integer Der numerische Wert der Protokollebene der ausgegebenen Meldung. Mögliche Werte: 20 – für LOG 30 – für INFO 40 – für NOTICE 50 – für WARNING 60 – für EXCEPTION
loglevel_text character(10) Die Protokollebene, die dem numerischen Wert in LogLevel entspricht. Mögliche Werte: LOG, INFO, NOTICE, WARNING und EXCEPTION.
Nachricht character(1024) Der Text der ausgegebenen Meldung.
linenum integer Die Zeilennummer der ausgegebenen Meldung.
querytext Zeichen (500) Der tatsächliche Text der Prozeduraufrufsabfrage.
label Zeichen (320) Entweder der Name der für die Ausführung verwendeten Datei oder eine mit dem Befehl SET QUERY_GROUP definierte Beschriftung. Wenn die Tabelle nicht dateibasiert ist oder der Parameter QUERY_GROUP nicht eingerichtet ist, ist der Wert in diesem Feld der Standardwert.
aborted integer Wenn eine gespeicherte Prozedur vom System beendet oder von einem Benutzer abgebrochen wurde, enthält diese Spalte den Wert 1. Wenn der Aufruf abgeschlossen wird, enthält diese Spalte den Wert 0.
message_xid bigint Die Transaktions-ID der ausgelösten Nachricht.

Beispielabfrage

Die folgenden SQL-Anweisungen zeigen, wie ausgegebene Meldungen mithilfe von SVL_STORED_PROC_MESSAGES überprüft werden können.

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

Die folgenden SQL-Anweisungen zeigen, wie ausgegebene Meldungen mit der SET-Option mithilfe von SVL_STORED_PROC_MESSAGES überprüft werden können, wenn eine gespeicherte Prozedur erstellt wird. Da test_proc() die Mindestprotokollebene NOTICE aufweist, werden nur Meldungen auf der Ebene NOTICE, WARNING und EXCEPTION in SVL_STORED_PROC_MESSAGES protokolliert.

-- 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)