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

Utilizzare la visualizzazione SVL_STATEMENTTEXT per ottenere un record completo di tutti i comandi SQL che sono stati eseguiti nel sistema.

La visualizzazione SVL_STATEMENTTEXT contiene l'unione di tutte le righe nelle tabelle STL_DDLTEXT, STL_QUERYTEXT e STL_UTILITYTEXT. Questa visualizzazione include anche un join alla tabella STL_QUERY.

SVL_STATEMENTTEXT è 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_QUERY_HISTORY. 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 ID dell'utente che ha generato la voce.
xid bigint ID di transazione associato all'istruzione.
pid integer ID di processo per l'istruzione.
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 il parametro QUERY_GROUP non è impostato, questo campo è vuoto.
starttime timestamp Orario esatto in cui l'istruzione ha avviato l'esecuzione, con 6 cifre di precisione per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358
endtime timestamp Orario esatto in cui l'istruzione ha terminato l'esecuzione, con 6 cifre di precisione per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.193640
sequenza integer Quando una singola istruzione contiene più di 200 caratteri, vengono registrate delle righe aggiuntive per tale istruzione. La sequenza 0 è la prima riga, 1 la seconda e così via.
tipo varchar(10) Tipo di istruzione SQL: QUERY, DDL o UTILITY.
text character(200) Testo SQL, in incrementi da 200 caratteri. Questo campo potrebbe contenere caratteri speciali come barra rovesciata (\\) e nuova riga (\n).

Query di esempio

La query seguente restituisce le istruzioni DDL eseguite il 16 giugno 2009:

select starttime, type, rtrim(text) from svl_statementtext where starttime like '2009-06-16%' and type='DDL' order by starttime asc; starttime | type | rtrim ---------------------------|------|-------------------------------- 2009-06-16 10:36:50.625097 | DDL | create table ddltest(c1 int); 2009-06-16 15:02:16.006341 | DDL | drop view alltickitjoin; 2009-06-16 15:02:23.65285 | DDL | drop table sales; 2009-06-16 15:02:24.548928 | DDL | drop table listing; 2009-06-16 15:02:25.536655 | DDL | drop table event; ...

Ricostruzione dell'SDL archiviato

Per ricostruire l'SQL archiviato nella colonna text di SVL_STATEMENTTEXT, eseguire un'istruzione SELECT per creare SQL da 1 o più parti nella colonna text. Prima di eseguire l'SQL ricostruito, sostituire un carattere speciale qualsiasi (\n) con una nuova riga. Il risultato della dichiarazione SELECT seguente è dato da una riga di SQL ricostruiti nel campo query_statement.

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS query_statement from SVL_STATEMENTTEXT where pid=pg_backend_pid();

Ad esempio, la query seguente seleziona 3 colonne. La query stessa è più lunga di 200 caratteri ed è archiviata in parti in SVL_STATEMENTTEXT.

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

In questo esempio, la query è archiviata in 2 parti (righe) nella colonna text di SVL_STATEMENTTEXT.

select sequence, text from SVL_STATEMENTTEXT where pid = pg_backend_pid() order by starttime, sequence;
sequence | text ----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 1 | \nFROM stl_querytext;

Per ricostruire l'SQL archiviato in STL_STATEMENTTEXT, eseguire l'SQL seguente.

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from SVL_STATEMENTTEXT where pid=pg_backend_pid();

Per utilizzare l'SQL ricostruito derivante nel client, sostituire qualsiasi carattere speciale (\n) con una nuova riga.

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;