DROP DATABASE ROLE¶
Entfernt die angegebene Datenbankrolle aus dem System.
- Siehe auch:
CREATE DATABASE ROLE, ALTER DATABASE ROLE, SHOW DATABASE ROLES
Syntax¶
DROP DATABASE ROLE [ IF EXISTS ] <name>
Parameter¶
name
Gibt den Bezeichner (d. h. den Namen) der Datenbankrolle an. Dieser muss für die Datenbank, in der die Rolle erstellt wird, eindeutig sein.
Der Bezeichner muss mit einem alphabetischen Zeichen beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Wenn der Bezeichner nicht vollqualifiziert ist (im Format
db_name.database_role_name
), sucht der Befehl die Datenbankrolle in der aktuellen Datenbank der Sitzung.
Nutzungshinweise¶
Entfernte Datenbankrollen können nicht wiederhergestellt werden, sondern müssen neu erstellt werden.
Die Eigentümerschaft an allen Objekten, die der gelöschten Datenbankrolle gehören, wird auf die Rolle übertragen, die den Befehl DROP DATABASEROLE ausführt. Um die Eigentümerschaft an jedem dieser Objekte auf eine andere Datenbankrolle zu übertragen, verwenden Sie GRANT OWNERSHIP … COPY CURRENT GRANTS.
Wenn eine Datenbankrolle eine zukünftige Berechtigung als Berechtigungsgeber oder Berechtigungsempfänger hat, kann die Datenbankrolle nur von einem Benutzer gelöscht werden, dem eine Rolle mit MANAGE GRANTS-Berechtigung zugewiesen ist.
Alle aktuellen und zukünftigen Berechtigungszuweisungen, bei denen die Datenbankrolle entweder als Berechtigungsgeber oder Berechtigungsempfänger benannt ist, werden beim Löschen der Datenbankrolle entfernt.
Abfragen der Account Usage-Ansicht GRANTS_TO_ROLES, um die Berechtigungen abzurufen, bei denen eine bestimmte Datenbankrolle als Berechtigungsgeber oder Berechtigungsempfänger angegeben ist:
SELECT * FROM snowflake.account_usage.grants_to_roles WHERE grantee_name = upper('<database_name>.<db_role_name>') OR granted_by = upper('<database_name>.<db_role_name>');
Im folgenden Beispiel werden die Berechtigungen abgerufen, bei denen
d1.dr1
der Berechtigungsgeber oder Berechtigungsempfänger ist:SELECT * FROM snowflake.account_usage.grants_to_roles WHERE grantee_name = upper('d1.dr1') OR granted_by = upper('d1.dr1');
Beispiele¶
DROP DATABASE ROLE d1.dr1;