SVL_STORED_PROC_MESSAGES - Amazon Redshift

SVL_STORED_PROC_MESSAGES

システムビュー SVL_STORED_PROC_MESSAGES を照会して、ストアドプロシージャメッセージに関する情報を取得できます。ストアドプロシージャコールがキャンセルされた場合でも、発生したメッセージがログに記録されます。ストアドプロシージャ呼び出しごとにクエリ ID を受け取ります。ログ記録されるメッセージの最小レベルを設定する方法の詳細については、stored_proc_log_min_messages を参照してください。

SVL_STORED_PROC_MESSAGES はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_PROCEDURE_MESSAGES でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。

テーブルの列

列名 データ型 説明
userid integer ステートメントを実行するために使用された権限を持つユーザーの ID。この呼び出しが SECURITY DEFINER ストアドプロシージャ内にネストされている場合、これはそのストアドプロシージャの所有者のユーザー ID です。
session_userid integer セッションの作成元であり、最上位ストアドプロシージャ呼び出しの呼び出し元であるユーザーの ID。
pid integer プロセス ID。
xid bigint プロシージャ呼び出しのクエリのトランザクション ID。
query integer プロシージャ呼び出しのクエリ ID。
recordtime timestamp メッセージが発生した時刻 (UTC)。
loglevel integer 発生したメッセージのログレベルの数値。使用できる値: 20 – LOG の場合 30 – INFO の場合 40 – NOTICE の場合 50 – WARNING の場合 60 – EXCEPTION の場合
loglevel_text character(10) loglevel の数値に対応するログレベル。可能な値: LOG、INFO、NOTICE、WARNING、EXCEPTION。
message character(1024) 発行されたメッセージのテキスト。
linenum integer 発行されたステートメントの行番号。
querytext character(500) プロシージャ呼び出しのクエリの実際のテキスト。
ラベル character(320) クエリを実行するために使用される名前、または SET QUERY_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY_GROUP パラメータが設定されていない場合、このフィールドの値はデフォルト になります。
aborted integer ストアドプロシージャがシステムによって停止されたか、ユーザーによってキャンセルされた場合、この列は 1 になります。呼び出しが最後まで実行された場合、この列は 0 になります。
message_xid bigint 発行されたメッセージのトランザクション ID。

サンプルクエリ

次の SQL ステートメントは、SVL_STORED_PROC_MESSAGES を使用して発行されたメッセージを確認する方法を示しています。

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

次の SQL ステートメントは、ストアドプロシージャの作成時に、SET オプションと SVL_STORED_PROC_MESSAGES を使用して発行されたメッセージを表示する方法を示します。test_proc() には最低ログレベルの NOTICE があるため、SVL_STORED_PROC_MESSAGES には、NOTICE、WARNING、EXCEPTION レベルのメッセージのみが記録されます。

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