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
}
Parâmetros¶
nameEspecifica 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_nameAltera 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 DISCOVERYSuspende 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
executionStateestá definido comoSUSPENDED. 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 DISCOVERYRetoma 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
executionStateestá definido comoRUNNING.UPDATE LINKED_CATALOGAtualiza as propriedades que se aplicam aos bancos de dados vinculados a catálogo. Você pode definir as seguintes propriedades:
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO ALLOWED_NAMESPACESEspecifica 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_NAMESPACESEspecifica um ou mais namespaces em seu catálogo remoto a serem removidos de sua lista de namespaces permitidos.
UNSET ALLOWED_NAMESPACESDesconfigura sua lista de namespaces permitidos para o padrão, que é todos os namespaces permitidos.
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO BLOCKED_NAMESPACESEspecifica 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.ns2for permitido, masns1estiver bloqueado, então o Snowflake não sincronizaráns1.ns2.REMOVE ( 'namespace1' [ , 'namespace2' , ... ] ) FROM BLOCKED_NAMESPACESEspecifica um ou mais namespaces em seu catálogo remoto a serem removidos de sua lista de namespaces bloqueados.
UNSET BLOCKED_NAMESPACESDesativa sua lista de namespaces bloqueados para o padrão, que é zero namespaces bloqueados.
SET SYNC_INTERVAL_SECONDS = valueEspecifica 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_PREFIXCOMMENTCONTACT
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;
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;