DROP ROLE

시스템에서 지정된 역할을 제거합니다.

참고 항목:

CREATE ROLE , ALTER ROLE , SHOW ROLES

구문

DROP ROLE [ IF EXISTS ] <name>
Copy

매개 변수

name

삭제할 역할의 식별자를 지정합니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

사용법 노트

  • 삭제된 역할은 복구할 수 없으며, 다시 만들어야 합니다.

  • 현재 기본 역할은 제거할 수 없습니다. 이 역할을 제거하려고 하면 오류가 반환됩니다. 예:

    CREATE ROLE bobr_primary;
    
    GRANT ROLE bobr_primary to USER bobr;
    
    USE ROLE bobr_primary;
    
    DROP ROLE bobr_primary;
    
    Copy
    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>');
    
    Copy

    다음 예에서는 myrole 이 부여자 또는 피부여자인 권한 부여를 검색합니다.

    SELECT *
      FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES
      WHERE grantee_name = UPPER('myrole') OR granted_by = UPPER('myrole');
    
    Copy
  • 역할이 사용자에 대한 역할 부여자인 경우, 역할을 삭제하면 이러한 부여가 자동으로 취소됩니다.

  • DROP ROLE 명령을 실행하면 권한이 취소됩니다. 취소할 권한의 수가 수천 개나 수백만 개일 경우 DROP ROLE 명령 실행 시 시간 초과가 발생할 수 있습니다. 이 명령을 다시 실행하면 이전 호출이 중단된 지점에서 실행을 안전하게 계속할 수 있습니다.

  • IF EXISTS 절이 지정되어 있고 대상 오브젝트가 존재하지 않으면 명령이 오류를 반환하지 않고 성공적으로 완료됩니다.

DROP ROLE myrole;
Copy