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;
CopyEn 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;
CopyDe 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