SVL_MULTI_STATEMENT_VIOLATIONS - Amazon Redshift

SVL_MULTI_STATEMENT_VIOLATIONS

Use a visualização SVL_MULTI_STATEMENT_VIOLATIONS para obter um registro completo de todos os comandos SQL executados no sistema que violam as restrições do bloco de transação.

Violações ocorrem quando você executa qualquer um dos seguintes comandos SQL que o Amazon Redshift restringe dentro de um bloco de transação ou solicitações de várias instruções:

nota

Se houver alguma entrada nesta exibição, altere suas aplicações e scripts SQL correspondentes. Recomendamos alterar o código da aplicação para mover o uso desses comandos SQL restritos para fora do bloco de transação. Se precisar de assistência adicional, entre em contato com o AWS Support.

SVL_MULTI_STATEMENT_VIOLATIONS é 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_QUERY_HISTORY. 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 que causou a violação.
banco de dados character(32) O nome do banco de dados ao qual o usuário estava conectado.
cmdname character(20) O nome do comando que não pode ser executado dentro de um bloco de transação ou solicitação de instrução múltipla. Por exemplo, CREATE DATABASE, DROP DATABASE, ALTER TABLE APPEND, CREATE EXTERNAL TABLE, DROP EXTERNAL TABLE, RENAME EXTERNAL TABLE, ALTER EXTERNAL TABLE, CREATE LIBRARY, DROP LIBRARY, REBUILDCAT, INDEXCAT, REINDEX DATABASE, VACUUM e GRANT em recursos externos, CLUSTER, COPY, CREATE TABLESPACE e DROP TABLESPACE.
xid bigint O ID da transação associada à instrução.
pid inteiro O ID do processo para a instrução.
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á branco.
starttime timestamp A hora exata em que a instrução começou a ser executada, com 6 dígitos de precisão para segundos fracionários, por exemplo: 2009-06-12 11:29:19.131358
endtime timestamp A hora exata em que a instrução terminou de ser executada, com 6 dígitos de precisão para segundos fracionários, por exemplo: 2009-06-12 11:29:19.193640
sequence inteiro Quando uma única instrução contém mais de 200 caracteres, são registradas linhas adicionais para essa instrução. O valor 0 da sequência é a primeira linha, 1 é a segunda, e assim por diante.
type varchar(10) O tipo da instrução SQL: QUERY, DDL ou UTILITY.
text character(200) O texto SQL, em incrementos de 200 caracteres. Esse campo pode conter caracteres especiais como barra invertida (\\) e nova linha (\n).

Consulta de exemplo

A consulta a seguir retorna várias instruções que têm violações.

select * from svl_multi_statement_violations order by starttime asc; userid | database | cmdname | xid | pid | label | starttime | endtime | sequence | type | text ============================================================================================================================== 1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | DDL | create table c(b int); 1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | UTILITY | create database b; 1 | dev | CREATE DATABASE | 1034 | 5729 |label1 | ********* | ******* | 0 | UTILITY | COMMIT ...