Befehl GRANT OWNERSHIP: Transfer der Eigentümerschaft für freigegebene Datenbanken nicht zulässig¶
Achtung
Diese Verhaltensänderung ist in Bundle 2023_06 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Die Befehle GRANT OWNERSHIP und DROP ROLE verhalten sich wie folgt:
- Bisher:
Wenn Sie einer Freigabe die Berechtigung USAGE für eine Datenbank erteilen, können Sie den Befehl GRANT OWNERSHIP ausführen, um die Berechtigung OWNERSHIP für die Datenbank auf eine andere Rolle zu übertragen. Beispiel:
GRANT USAGE ON DATABASE mydb TO SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2 REVOKE CURRENT GRANTS;
CopyAußerdem können Sie die Rolle mit der Berechtigung OWNERSHIP für die freigegebene Datenbank löschen:
DROP ROLE r2;
Copy- Jetzt:
Sie können die Eigentümerschaft an der freigegebenen Datenbank auf eine andere Rolle übertragen und die Klausel COPY CURRENT GRANTS verwenden. Sie können die Eigentümerschaft an der freigegebenen Datenbank jedoch nicht auf eine andere Rolle übertragen und Sie können nicht die Klausel REVOKE CURRENT GRANTS verwenden. Wenn Sie dies versuchen, gibt Snowflake die folgende Fehlermeldung aus:
Cannot transfer ownership on a database that is granted to a share
Um diese Fehlermeldung zu vermeiden und die Berechtigung OWNERSHIP auf eine andere Rolle zu übertragen, entziehen Sie der Freigabe die Berechtigung USAGE für die Datenbank, übertragen die Berechtigung OWNERSHIP für die Datenbank auf eine andere Rolle und erteilen der Freigabe die Berechtigung USAGE für die Datenbank. Beispiel:
REVOKE USAGE ON DATABASE mydb FROM SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2; GRANT USAGE ON DATABASE mydb TO SHARE r2;
CopyWenn Sie außerdem versuchen, die Rolle mit der Berechtigung OWNERSHIP für die freigegebene Datenbank zu löschen, gibt Snowflake die folgende Fehlermeldung mit Anweisungen zu den zu ergreifenden Maßnahmen aus:
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