ALTER DATABASE (vinculado a catálogo)

Modifica as propriedades de um existente banco de dados vinculado a catálogo.

As modificações do banco de dados incluem as seguintes ações:

  • Ativar ou desativar a descoberta automática.

  • Alteração dos namespaces permitidos e bloqueados.

  • Alterar o intervalo de tempo que o Snowflake deve usar para descobrir automaticamente esquemas e tabelas em seu catálogo remoto.

  • Alterar se o catálogo remoto é somente leitura ou gravável.

Sintaxe

ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER DATABASE [ IF EXISTS ] <name> SUSPEND DISCOVERY

ALTER DATABASE [ IF EXISTS ] <name> RESUME DISCOVERY

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  ADD ( '<namespace>' [ , ... ] ) TO ALLOWED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  REMOVE ( '<namespace>' [ , ... ] ) FROM ALLOWED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  UNSET ALLOWED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  ADD ( '<namespace>' [ , ... ] ) TO BLOCKED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  REMOVE ( '<namespace>' [ , ... ] ) FROM BLOCKED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  UNSET BLOCKED_NAMESPACES

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  SET SYNC_INTERVAL_SECONDS = <value>

ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
  SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }

ALTER DATABASE [ IF EXISTS ] <name> SET [ BASE_LOCATION_PREFIX = '<string>' ]
                                        [ COMMENT = '<string_literal>' ]
                                        [ CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { BASE_LOCATION_PREFIX |
                                            COMMENT              |
                                            CONTACT
                                          }
Copy

Parâmetros

name

Especifica o identificador do banco de dados vinculado ao catálogo a ser alterado.

Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

RENAME TO new_name

Altera o nome do banco de dados vinculado a catálogo para new_name. O novo identificador deve ser exclusivo para a conta.

Para obter mais informações, consulte Requisitos para identificadores.

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

SUSPEND DISCOVERY

Suspende a descoberta automática. Você pode suspender a descoberta automática para evitar consumir créditos ou recursos desnecessários se um problema subjacente estiver impedindo o Snowflake de descobrir as tabelas em seu catálogo remoto. Por exemplo, talvez você queira suspender a descoberta automática porque há um problema subjacente com permissões ausentes ou uma configuração incorreta. Depois de resolver o problema, execute ALTER DATABASE … RESUME DISCOVERY para retomar a descoberta.

Para confirmar que a descoberta automática está suspensa, chame a função SYSTEM$CATALOG_LINK_STATUS e verifique se o campo executionState está definido como SUSPENDED. Se você suspender a descoberta automática, mas uma tarefa de descoberta automática estiver em execução, o estado de execução não será alterado para suspenso até que a tarefa seja concluída.

Nota

Suspender a descoberta automática não desativa a atualização automática. Para desativar a atualização automática de uma tabela Iceberg existente, consulte Habilitar ou desabilitar a atualização automática.

RESUME DISCOVERY

Retoma a descoberta automática. Talvez você queira retomar a descoberta pelos seguintes motivos:

  • Você suspendeu a descoberta para resolver um problema e agora está pronto para retomar a descoberta.

  • Você deseja forçar uma execução de descoberta imediata para garantir que as alterações recentes, como permissões fixas, sejam selecionadas.

Para confirmar que a descoberta automática foi retomada, chame a função SYSTEM$CATALOG_LINK_STATUS e, em seguida, verifique se o campo executionState está definido como RUNNING.

UPDATE LINKED_CATALOG

Atualiza as propriedades que se aplicam aos bancos de dados vinculados a catálogo. Você pode definir as seguintes propriedades:

ADD ( 'namespace1' [ , 'namespace2' ,  ... ] ) TO ALLOWED_NAMESPACES

Especifica um ou mais namespaces em seu catálogo remoto para limitar o escopo da descoberta automática. O Snowflake sincroniza os namespaces especificados e todos os namespaces e tabelas aninhados sob eles.

  • Se você criou um banco de dados vinculado a catálogo com um vazio ALLOWED_NAMESPACES lista, o Snowflake sincroniza todos os namespaces e tabelas do catálogo remoto.

    Se você posteriormente alterar o banco de dados especificando o ALLOWED_NAMESPACES para permitir apenas uma lista específica de namespaces, o Snowflake atualiza o banco de dados vinculado ao catálogo para reter apenas os namespaces permitidos por você. Todos os outros namespaces e tabelas são descartados do banco de dados vinculado a catálogo.

  • Se você criou um banco de dados vinculado a catálogo com uma lista de ALLOWED_NAMESPACES, o Snowflake cria apenas esses namespaces permitidos no banco de dados vinculado a catálogo.

    Se você alterar posteriormente o banco de dados para adicionar namespaces à ALLOWED_NAMESPACES lista, o Snowflake cria apenas os namespaces recém-adicionados e retém os namespaces permitidos existentes. Se você remover namespaces da ALLOWED_NAMESPACES lista, o Snowflake descarta apenas os namespaces recém-removidos do banco de dados vinculado ao catálogo e retém todos os namespaces permitidos restantes.

Se um namespace aninhado estiver na lista ALLOWED_NAMESPACES, mas você definir o parâmetro NAMESPACE_MODE como IGNORE_NESTED_NAMESPACE, o Snowflake não sincronizará o namespace aninhado ou quaisquer esquemas e tabelas sob ele.

REMOVE ( 'namespace1' [ , 'namespace2' ,  ... ] ) FROM ALLOWED_NAMESPACES

Especifica um ou mais namespaces em seu catálogo remoto a serem removidos de sua lista de namespaces permitidos.

UNSET ALLOWED_NAMESPACES

Desconfigura sua lista de namespaces permitidos para o padrão, que é todos os namespaces permitidos.

ADD ( 'namespace1' [ , 'namespace2' ,  ... ] ) TO BLOCKED_NAMESPACES

Especifica um ou mais namespaces em seu catálogo remoto a serem bloqueados para descoberta automática.

O Snowflake bloqueia os namespaces especificados e todos os namespaces e tabelas aninhados sob eles.

Se você especificar ALLOWED_NAMESPACES e BLOCKED_NAMESPACES, a lista BLOCKED_NAMESPACES tem precedência. Por exemplo, se ns1.ns2 for permitido, mas ns1 estiver bloqueado, então o Snowflake não sincronizará ns1.ns2.

REMOVE ( 'namespace1' [ , 'namespace2' ,  ... ] ) FROM BLOCKED_NAMESPACES

Especifica um ou mais namespaces em seu catálogo remoto a serem removidos de sua lista de namespaces bloqueados.

UNSET BLOCKED_NAMESPACES

Desativa sua lista de namespaces bloqueados para o padrão, que é zero namespaces bloqueados.

SET SYNC_INTERVAL_SECONDS = value

Especifica o intervalo de tempo em segundos que o Snowflake deve usar para descobrir automaticamente esquemas e tabelas em seu catálogo remoto. Você pode reduzir seu consumo de crédito definindo um intervalo de tempo mais longo.

Valores: 30 a 86400 (1 dia), inclusivo

Padrão: 30 segundos

SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }

Especifica se o banco de dados vinculado ao catálogo é somente leitura ou gravável.

  • NONE: Seu banco de dados vinculado a catálogo é somente leitura.

    Quando o banco de dados vinculado ao catálogo é somente leitura, qualquer operação executada que exija confirmação no catálogo falhará. Por exemplo, DROP ICEBERG TABLE.

  • ALL: Seu banco de dados vinculado a catálogo é gravável.

    Aviso

    Quando o banco de dados vinculado ao catálogo tiver permissões de gravação ativadas, o Snowflake propagará quedas de tabela para o catálogo remoto, o que removerá a tabela e os dados de ambos os sistemas.

Padrão: ALL

SET ...

Especifica uma ou mais propriedades ou parâmetros a serem definidos para o banco de dados vinculado a catálogo, separados por espaços em branco, vírgulas ou novas linhas:

BASE_LOCATION_PREFIX = 'string'

Especifica um prefixo que o Snowflake deve usar no caminho de gravação para gerenciadas externamente Apache Iceberg™ Tabelas. Para obter mais informações, consulte Diretórios de dados e metadados para tabelas Iceberg e BASE_LOCATION_PREFIX.

Padrão: sem valor

COMMENT = 'string_literal'

Adiciona um comentário ou substitui um comentário existente para o banco de dados vinculado a catálogo.

CONTACT purpose = contact [ , purpose = contact ... ]

Associe o objeto existente a um ou mais contatos.

Não é possível definir a propriedade CONTACT com outras propriedades na mesma instrução.

UNSET ...

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

  • BASE_LOCATION_PREFIX

  • COMMENT

  • CONTACT

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

OWNERSHIP

O banco de dados vinculado ao catálogo que está sendo modificado.

Necessário para suspender ou retomar a descoberta automática da tabela.

OWNERSHIP ou MODIFY

O banco de dados vinculado ao catálogo que está sendo modificado.

Necessário para todas as outras operações.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Exemplos

Redefinição da lista de namespaces permitidos para um banco de dados vinculado a catálogo chamado my_linked_db para o padrão.

ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
  UNSET ALLOWED_NAMESPACES;
Copy

Adicionar my_namespace para a lista de namespaces permitidos para um banco de dados vinculado a catálogo chamado my_linked_db.

ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
 ADD ('my_namespace') TO ALLOWED_NAMESPACES;
Copy