SVL_STORED_PROC_MESSAGES - Amazon Redshift

SVL_STORED_PROC_MESSAGES

É possível consultar a visualização do sistema SVL_STORED_PROC_MESSAGES para obter informações sobre mensagens de procedimento armazenado. As mensagens geradas são registradas mesmo se a chamada de procedimento armazenado for cancelada. Cada chamada de procedimento armazenado recebe um ID de consulta. Para obter mais informações sobre como definir o nível mínimo para mensagens registradas em log, consulte stored_proc_log_min_messages.

SVL_STORED_PROC_MESSAGES está visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para ter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.

Alguns ou todos os dados nessa tabela também podem ser encontrados na exibição de monitoramento SYS SYS_PROCEDURE_MESSAGES. Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender. É recomendável usar a exibição de monitoramento SYS nas consultas.

Colunas da tabela

Nome da coluna Tipo de dados Descrição
userid inteiro O ID do usuário cujos privilégios foram usados para executar a instrução. Se essa chamada tiver sido aninhada dentro de um procedimento armazenado DEFINIDOR DE SEGURANÇA, esse será o userid do proprietário desse procedimento armazenado.
session_userid inteiro O ID do usuário que criou a sessão e é o invocador da chamada de procedimento armazenado de nível superior.
pid inteiro O ID do processo.
xid bigint O ID da transação da consulta de chamada de procedimento.
consulta inteiro O ID da consulta da chamada de procedimento.
recordtime timestamp A hora em UTC em que a mensagem foi gerada.
loglevel inteiro O valor numérico do nível de log da mensagem gerada. Valores possíveis: 20 – para LOG 30 – para INFO 40 – para NOTICE 50 – para WARNING 60 – para EXCEPTION
loglevel_text character(10) O nível de log que corresponde ao valor numérico em loglevel. Valores possíveis: LOG, INFO, NOTICE, WARNING e EXCEPTION.
message character(1024) O texto da mensagem gerada.
linenum inteiro O número da linha da instrução gerada.
querytext character(500) O texto real da consulta de chamada de procedimento.
label character(320) O nome do arquivo usado para executar a consulta ou um rótulo definido com o comando SET QUERY_GROUP. Se a consulta não for baseada em arquivos ou o parâmetro QUERY_GROUP não estiver definido, o valor deste campo será o padrão.
aborted inteiro Se um procedimento armazenado tiver sido interrompido pelo sistema ou cancelado pelo usuário, essa coluna conterá o valor 1. Se a chamada for concluída, essa coluna terá o valor 0.
message_xid bigint O ID da transação da mensagem gerada.

Consulta de exemplo

As instruções SQL a seguir mostram como usar SVL_STORED_PROC_MESSAGES para revisar mensagens geradas.

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

As instruções SQL a seguir mostram como usar SVL_STORED_PROC_MESSAGES para revisar mensagens geradas com a opção SET ao criar um procedimento armazenado. Como test_proc() tem um nível de log mínimo de NOTICE, apenas as mensagens de nível NOTICE, WARNING e EXCEPTION são registradas em log em 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)