GRANT DATABASE ROLE … TO SHARE
GRANT DATABASE ROLE … TO SHARE
데이터베이스 역할(database role)을 공유(share)에 부여하는 명령이에요. 데이터베이스 역할을 부여하면 단일 데이터베이스에 대한 권한이 공유에 효과적으로 추가되며, 이 공유를 하나 이상의 소비자 계정과 공유할 수 있어요.
출처: 문서
본문
소비자가 공유에서 데이터베이스를 만든 후, 공유된 데이터베이스 역할을 계정의 역할에 부여하여 그 역할을 가진 사용자가 공유의 데이터베이스 객체에 접근할 수 있게 할 수 있어요.
구문 (Syntax)
GRANT DATABASE ROLE <name>
TO SHARE <share_name>
파라미터
- name — 데이터베이스 역할의 식별자(이름)를 지정해요. 역할이 생성되는 데이터베이스 내에서 고유해야 해요. 식별자는 알파벳 문자로 시작해야 하며, 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 묶은 식별자는 대소문자를 구분해요. 식별자가
db_name.database_role_name형식으로 정규화되지 않았다면, 명령은 세션의 현재 데이터베이스에서 데이터베이스 역할을 찾아요. - share_name — 지정된 데이터베이스 역할이 부여되는 공유의 식별자를 지정해요.
사용 메모 (Usage notes)
- 데이터베이스 역할에 DDL 또는 기타 제한된 권한이 부여되었으면 데이터베이스 역할을 공유에 부여하는 것은 실패해요. 데이터베이스 역할은 데이터베이스와 그 객체에 대한 읽기 전용 활동에만 권한을 부여할 수 있어요.
- 공유된 데이터베이스 역할은 future grants를 지원하지 않아요. Snowflake는 취하는 작업에 따라 다음 오류 메시지를 반환해요:
- 객체에 future 권한을 데이터베이스 역할에 부여하고 데이터베이스 역할을 공유에 부여하면:
GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1; GRANT DATABASE ROLE dbr1 TO SHARE myshare;Cannot share a database role with future grants to it.- 데이터베이스 역할을 공유에 부여하고 객체에 future 권한을 데이터베이스 역할에 부여하면:
GRANT DATABASE ROLE dbr1 TO SHARE myshare; GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;Cannot grant future grants to a database role that is granted to a share. - 다음 명령으로 데이터베이스 역할에 연결된 future grants가 있는지 식별하여 이러한 오류 메시지를 피할 수 있어요:
SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;
예시 (Examples)
데이터베이스 d1의 데이터베이스 역할 dr1을 공유 share1에 부여해요:
GRANT DATABASE ROLE d1.dr1 TO SHARE share1;