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:
DROP EXTERNAL TABLE
RENAME EXTERNAL TABLE
ALTER EXTERNAL TABLE
CREATE TABLESPACE
DROP TABLESPACE
REBUILDCAT
INDEXCAT
REINDEX DATABASE
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. |
tipo | 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 ...