DROP ROLE¶
指定されたロールをシステムから削除します。
- こちらもご参照ください。
構文¶
DROP ROLE [ IF EXISTS ] <name>
パラメーター¶
name
ドロップするロールの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
使用上の注意¶
ドロップされたロールは回復できません。再作成する必要があります。
現在のプライマリロールを削除することはできません。このロールを削除しようとするとエラーが返されます。例:
CREATE ROLE bobr_primary; GRANT ROLE bobr_primary to USER bobr; USE ROLE bobr_primary; DROP ROLE bobr_primary;
SQL execution error: Cannot drop role BOBR_PRIMARY as it is the current primary role.
詳細については、 アクティブロール および プライマリ・ロールとセカンダリ・ロールによる権限付与 をご参照ください。
共有データベース上で OWNERSHIP 権限を持つロールはドロップできません。 GRANT OWNERSHIP コマンドを使用して、まず共有データベースの OWNERSHIP 権限を譲渡し、次にそのロールをドロップします。
ドロップされたロールが所有するオブジェクトの所有権は、 DROP ROLE コマンドを実行するロールに譲渡されます。これらの各オブジェクトの所有権を別のロールに譲渡するには、 GRANT OWNERSHIP ... COPY CURRENT GRANTS を使用します。
ロールに付与者または被付与者としての将来の権限がある場合、ロールをドロップできるのは、MANAGE GRANTS 権限があるロールを持つユーザーのみです。
ロールがドロップされると、そのロールを付与者または被付与者として指定する現在および将来のすべての付与がドロップされます。
GRANTS_TO_ROLES Account Usageビューをクエリして、指定されたロールを付与者または被付与者として指定する権限付与を取得します。
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE grantee_name = UPPER('<role_name>') OR granted_by = UPPER('<role_name>');
次の例では、
myrole
が付与者または被付与者である付与を取得します。SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE grantee_name = UPPER('myrole') OR granted_by = UPPER('myrole');
ロールがユーザーへのロールの付与者である場合にロールをドロップすると、これらの付与が自動的に取り消されます。
付与の失効は、 DROP ROLE コマンドの実行中に起こります。取り消す付与が何千、何百万とある場合、 DROP ROLE コマンドはタイムアウトする場合があります。コマンドを再実行し、前回の起動が停止した場所で実行を継続することは安全です。
IF EXISTS
句が指定され、ターゲットオブジェクトが存在しない場合、コマンドはエラーを返さずに正常に完了します。
例¶
DROP ROLE myrole;