Comando GRANT OWNERSHIP: transferência de propriedade não permitida para bancos de dados compartilhados¶
Atenção
Essa mudança de comportamento está no pacote 2023_06.
Para saber o status atual do pacote, consulte Histórico do pacote.
Os comandos GRANT OWNERSHIP e DROP ROLE se comportam da seguinte forma:
- Anteriormente:
Ao conceder o privilégio USAGE em um banco de dados para um compartilhamento, você pode executar o comando GRANT OWNERSHIP para transferir o privilégio OWNERSHIP no banco de dados para uma função diferente. Por exemplo:
GRANT USAGE ON DATABASE mydb TO SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2 REVOKE CURRENT GRANTS;
CopyAlém disso, você pode eliminar a função que tem o privilégio OWNERSHIP no banco de dados compartilhado:
DROP ROLE r2;
Copy- Atualmente:
Você pode transferir a propriedade do banco de dados compartilhado para uma função diferente e usar a cláusula COPY CURRENT GRANTS, mas não pode transferir a propriedade do banco de dados compartilhado para uma função diferente e usar a cláusula REVOKE CURRENT GRANTS. Se você tentar fazer isso, o Snowflake retornará a seguinte mensagem de erro:
Cannot transfer ownership on a database that is granted to a share
Para evitar essa mensagem de erro e transferir o privilégio OWNERSHIP para uma função diferente, revogue o privilégio USAGE no banco de dados do compartilhamento, transfira o privilégio OWNERSHIP no banco de dados para uma função diferente e conceda o privilégio USAGE no banco de dados para o compartilhamento. Por exemplo:
REVOKE USAGE ON DATABASE mydb FROM SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2; GRANT USAGE ON DATABASE mydb TO SHARE r2;
CopyAlém disso, se você tentar eliminar a função que tem o privilégio OWNERSHIP no banco de dados compartilhado, o Snowflake retornará a seguinte mensagem de erro com instruções sobre as medidas a serem tomadas:
Cannot drop a role that is the owner of one or more shared databases. Run 'SHOW GRANTS TO ROLE <role_name>' to find these shared databases and transfer their ownership to appropriate role using 'GRANT OWNERSHIP ON DATABASE <database_name> TO ROLE <target_role_name> COPY CURRENT GRANTS'.
Ref: 1181