Commande GRANT OWNERSHIP : le transfert de propriété n’est pas autorisé pour les bases de données partagées

Attention

Ce changement de comportement est présent dans le bundle 2023_06.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Les commandes GRANT OWNERSHIP et DROP ROLE se comportent comme suit :

Précédemment

Lorsque vous accordez le privilège USAGE sur une base de données à un partage, vous pouvez exécuter la commande GRANT OWNERSHIP pour transférer le privilège OWNERSHIP sur la base de données à un autre rôle. Par exemple :

GRANT USAGE ON DATABASE mydb TO SHARE myshare;
GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2 REVOKE CURRENT GRANTS;
Copy

En outre, vous pouvez supprimer le rôle qui possède le privilège OWNERSHIP sur la base de données partagée :

DROP ROLE r2;
Copy
Actuellement

Vous pouvez transférer la propriété de la base de données partagée à un autre rôle et utiliser la clause COPY CURRENT GRANTS. Cependant, vous ne pouvez pas transférer la propriété de la base de données partagée à un autre rôle et utiliser la clause REVOKE CURRENT GRANTS. Si vous essayez de le faire, Snowflake renvoie le message d’erreur suivant :

Cannot transfer ownership on a database that is granted to a share

Pour éviter ce message d’erreur et transférer le privilège OWNERSHIP à un autre rôle, révoquez le privilège USAGE sur la base de données depuis le partage, transférez le privilège OWNERSHIP sur la base de données à un autre rôle et accordez le privilège USAGE sur la base de données au partage. Par exemple :

REVOKE USAGE ON DATABASE mydb FROM SHARE myshare;
GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2;
GRANT USAGE ON DATABASE mydb TO SHARE r2;
Copy

De plus, si vous essayez de supprimer le rôle qui a le privilège OWNERSHIP sur la base de données partagée, Snowflake renvoie le message d’erreur suivant avec des instructions sur les actions à entreprendre :

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'.

Réf : 1181