ALTER SCHEMA

Modifica as propriedades de um esquema existente, inclusive renomeando o esquema ou trocando-o por outro esquema e alterando o período de retenção de dados do Time Travel (se você estiver usando o Snowflake Enterprise Edition ou superior).

Consulte também:

CREATE SCHEMA , DESCRIBE SCHEMA , DROP SCHEMA , SHOW SCHEMAS , UNDROP SCHEMA

Sintaxe

ALTER SCHEMA [ IF EXISTS ] <name> RENAME TO <new_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SWAP WITH <target_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SET {
                                      [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
                                      [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                      [ EXTERNAL_VOLUME = <external_volume_name> ]
                                      [ CATALOG = <catalog_integration_name> ]
                                      [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ LOG_LEVEL = '<log_level>' ]
                                      [ TRACE_LEVEL = '<trace_level>' ]
                                      [ COMMENT = '<string_literal>' ]
                                      }

ALTER SCHEMA [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
                                        DATA_RETENTION_TIME_IN_DAYS         |
                                        MAX_DATA_EXTENSION_TIME_IN_DAYS     |
                                        EXTERNAL_VOLUME                     |
                                        CATALOG                             |
                                        DEFAULT_DDL_COLLATION               |
                                        LOG_LEVEL                           |
                                        TRACE_LEVEL                         |
                                        COMMENT
                                        }
                                        [ , ... ]

ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS
Copy

Parâmetros

name

Especifica o identificador do esquema a ser alterado. Se o identificador contiver espaços, caracteres especiais ou caracteres com letras maiúsculas e minúsculas, toda a cadeia de caracteres deve ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

RENAME TO new_schema_name

Especifica o novo identificador para o esquema; deve ser único para o banco de dados.

Para obter mais detalhes, consulte Requisitos para identificadores.

Você pode mover o objeto para um banco de dados diferente enquanto opcionalmente renomeia o esquema. Para isso, especifique um valor qualificado new_schema_name que inclua o novo banco de dados no formulário db_name.new_schema_name.

Nota

O banco de dados de destino já deve existir. Além disso, um esquema com o mesmo nome não pode já existir no novo local; caso contrário, a instrução retorna um erro.

Quando um objeto é renomeado, outros objetos que fazem referência a ele devem ser atualizados com o novo nome.

SWAP WITH target_schema_name

Troca todos os objetos (tabelas, visualizações etc.) e metadados, incluindo identificadores, entre os dois esquemas especificados. Também troca todos os privilégios de controle de acesso concedidos nos esquemas e objetos que eles contêm. SWAP WITH realiza essencialmente uma renomeação de ambos os esquemas como uma única operação.

SET ...

Especifica uma (ou mais) propriedades a serem definidas para o esquema (separadas por espaços em branco, vírgulas ou novas linhas):

DATA_RETENTION_TIME_IN_DAYS = integer

Especifica o número de dias para os quais as ações do Time Travel (CLONE e UNDROP) podem ser executadas no esquema, bem como especifica o tempo padrão de retenção do Time Travel para todas as tabelas criadas no esquema.

O valor que você pode especificar depende da edição do Snowflake que você está usando:

  • Standard Edition: 0 ou 1

  • Enterprise Edition (ou superior): 0 a 90

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Parâmetro de objeto que especifica o número máximo de dias para os quais o Snowflake pode estender o período de retenção de dados das tabelas no esquema para evitar que os fluxos nas tabelas se tornem obsoletos.

Para uma descrição detalhada deste parâmetro, consulte MAX_DATA_EXTENSION_TIME_IN_DAYS.

EXTERNAL_VOLUME = external_volume_name

Parâmetro de objeto que especifica o volume externo padrão a ser usado para tabelas Iceberg.

Para obter mais informações sobre este parâmetro, consulte EXTERNAL_VOLUME.

CATALOG = catalog_integration_name

Parâmetro de objeto que especifica a integração de catálogo padrão a ser usada para tabelas Iceberg.

Para obter mais informações sobre este parâmetro, consulte CATALOG.

DEFAULT_DDL_COLLATION = 'collation_specification'

Especifica uma especificação de agrupamento padrão para:

  • Qualquer nova coluna adicionada às tabelas existentes no esquema.

  • Todas as colunas em novas tabelas adicionadas ao esquema.

A definição do parâmetro não altera a especificação de agrupamento para qualquer coluna existente.

Para obter mais detalhes sobre o parâmetro, consulte DEFAULT_DDL_COLLATION.

LOG_LEVEL = 'log_level'

Especifica o nível de gravidade das mensagens que devem ser ingeridas e disponibilizadas na tabela de eventos ativos. As mensagens no nível especificado (e em níveis mais graves) são ingeridas.

Para obter mais informações sobre os níveis, consulte LOG_LEVEL. Para obter informações sobre como configurar o nível de registro, consulte Configuração do nível de registro.

TRACE_LEVEL = 'trace_level'

Controla como os eventos de rastreamento são ingeridos na tabela de eventos.

Para obter informações sobre níveis, consulte TRACE_LEVEL. Para obter informações sobre como configurar o nível de rastreamento, consulte Configuração do nível de rastreamento.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Especifica o nome da tag e o valor da cadeia de caracteres dela.

O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.

Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.

COMMENT = 'string_literal'

Adiciona um comentário ou substitui um comentário existente para o esquema.

UNSET ...

Especifica uma (ou mais) propriedades e/ou parâmetros a serem removidos da definição para o banco de dados, que os redefine aos padrões:

  • DATA_RETENTION_TIME_IN_DAYS

  • MAX_DATA_EXTENSION_TIME_IN_DAYS

  • EXTERNAL_VOLUME

  • CATALOG

  • DEFAULT_DDL_COLLATION

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

Você pode redefinir várias propriedades/parâmetros com uma única instrução ALTER; no entanto, cada propriedade/parâmetro deve ser separado por uma vírgula. Ao redefinir uma propriedade/parâmetro, especificar somente o nome; especificar um valor para a propriedade retornará um erro.

ENABLE | DISABLE MANAGED ACCESS

Habilite o acesso gerenciado para um esquema, ou desabilite a conversão de um esquema de acesso gerenciado em um esquema regular. Os esquemas de acesso gerenciados centralizam a gestão de privilégios com o proprietário do esquema.

Em esquemas regulares, o proprietário de um objeto (ou seja, a função que tem o privilégio OWNERSHIP no objeto) pode conceder outros privilégios em seus objetos a outras funções. Nos esquemas de acesso gerenciado, o proprietário do esquema gerencia todas as concessões de privilégios, incluindo futuras concessões, em objetos no esquema. Os proprietários dos objetos retêm os privilégios OWNERSHIP nos objetos; entretanto, somente o proprietário do esquema pode administrar as concessões de privilégios nos objetos.

Notas de uso

  • Para renomear um esquema, a função usada para realizar a operação deve ter o privilégio CREATE SCHEMA no banco de dados para o esquema e privilégios OWNERSHIP no esquema.

  • Para trocar dois esquemas, a função utilizada para realizar a operação deve ter privilégios OWNERSHIP em ambos os esquemas.

  • Converter um esquema regular em um esquema de acesso gerenciado:

    • O proprietário do esquema (ou seja, a função com privilégios OWNERSHIP no esquema) também deve ter o privilégio global MANAGE GRANTS. O privilégio MANAGE GRANTS é necessário porque outra função com este privilégio poderia ter definido futuras concessões em objetos de um tipo específico no esquema. Após um esquema regular tornar-se um esquema de acesso gerenciado, o proprietário do esquema poderia revogar as futuras concessões sem entender por que uma função com o privilégio MANAGE GRANTS foi concedida.

    • Todas as concessões futuras abertas devem ser revogadas usando REVOKE <privilégios> com a palavra-chave FUTURE.

    Depois que um esquema regular é convertido em um esquema de acesso gerenciado, todos os privilégios previamente concedidos nos objetos individuais são mantidos; entretanto, os proprietários dos objetos não podem conceder outros privilégios nesses objetos.

  • Para converter um esquema de acesso gerenciado em um esquema regular, o proprietário do esquema também deve ter o privilégio global MANAGE GRANTS somente se o esquema atual tiver futuras concessões de privilégios definidos.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Renomear esquema schema1 como schema2:

ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;
Copy

Converter um esquema regular em um esquema de acesso gerenciado:

ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;
Copy