ALTER SCHEMA

ALTER SCHEMA

기존 스키마(schema)의 속성을 수정하는 명령이에요. 스키마 이름 바꾸기, 다른 스키마와 교체(swap), Time Travel 데이터 보존 기간 변경(Enterprise Edition 이상 사용 시)을 포함해요.

출처: 문서

본문

관련 명령: CREATE SCHEMA, DESCRIBE SCHEMA, DROP SCHEMA, SHOW SCHEMAS, UNDROP SCHEMA

구문 (Syntax)

ALTER SCHEMA [ IF EXISTS ] <name> RENAME TO <new_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SWAP WITH <target_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SET {
                                      [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
                                      [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                      [ EXTERNAL_VOLUME = <external_volume_name> ]
                                      [ CATALOG = <catalog_integration_name> ]
                                      [ ICEBERG_DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ ICEBERG_VERSION_DEFAULT = <integer> ]
                                      [ ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } ]
                                      [ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
                                      [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
                                      [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ DEFAULT_NOTEBOOK_COMPUTE_POOL_CPU = '<compute_pool_name>' ]
                                      [ DEFAULT_NOTEBOOK_COMPUTE_POOL_GPU = '<compute_pool_name>' ]
                                      [ LOG_LEVEL = '<log_level>' ]
                                      [ TRACE_LEVEL = '<trace_level>' ]
                                      [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
                                      [ CLASSIFICATION_PROFILE = '<profile_name>' ]
                                      [ COMMENT = '<string_literal>' ]
                                      [ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' ]
                                      [ REPLICABLE_WITH_FAILOVER_GROUPS = { 'YES' | 'NO' } ]
                                      [ BASE_LOCATION_PREFIX = '<string>']
                                      [ DEFAULT_STREAMLIT_NOTEBOOK_WAREHOUSE = '<warehouse_name>']
                                      [ CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ]
                                      [ OBJECT_VISIBILITY = PRIVILEGED } ]
                                      [ ENABLE_DATA_COMPACTION = { TRUE | FALSE } ]
                                      [ OAUTH_AUTHORIZATION_SERVER = <integration_name> ]
                                      [ OAUTH_SCOPES_SUPPORTED = '<comma_separated_scopes>' ]
                                      }

ALTER SCHEMA [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
                                        DATA_RETENTION_TIME_IN_DAYS         |
                                        MAX_DATA_EXTENSION_TIME_IN_DAYS     |
                                        EXTERNAL_VOLUME                     |
                                        CATALOG                             |
                                        ICEBERG_DEFAULT_DDL_COLLATION       |
                                        ICEBERG_VERSION_DEFAULT             |
                                        ICEBERG_MERGE_ON_READ_BEHAVIOR      |
                                        ENABLE_ICEBERG_MERGE_ON_READ        |
                                        REPLACE_INVALID_CHARACTERS          |
                                        DEFAULT_DDL_COLLATION               |
                                        LOG_LEVEL                           |
                                        TRACE_LEVEL                         |
                                        STORAGE_SERIALIZATION_POLICY        |
                                        COMMENT                             |
                                        CATALOG_SYNC                        |
                                        REPLICABLE_WITH_FAILOVER_GROUPS     |
                                        BASE_LOCATION_PREFIX                |
                                        DEFAULT_STREAMLIT_NOTEBOOK_WAREHOUSE|
                                        CONTACT <purpose>
                                        CLASSIFICATION_PROFILE
                                        OBJECT_VISIBILITY                   |
                                        CONTACT <purpose>                   |
                                        CLASSIFICATION_PROFILE              |
                                        ENABLE_DATA_COMPACTION              |
                                        OAUTH_AUTHORIZATION_SERVER          |
                                        OAUTH_SCOPES_SUPPORTED              |
                                        DCM PROJECT
                                        }
                                        [ , ... ]

ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS

매개변수 (Parameters)

name — 수정할 스키마의 식별자를 지정해요. 식별자에 공백, 특수 문자 또는 대소문자 혼합 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요.

RENAME TO new_schema_name — 스키마의 새 식별자를 지정해요. 데이터베이스에서 고유해야 해요. 자세한 내용은 식별자 요구사항을 참고하세요.

스키마 이름을 바꾸면서 다른 데이터베이스로 이동할 수 있어요. 그러려면 db_name.new_schema_name 형식으로 새 데이터베이스 이름이 포함된 정규화된 new_schema_name 값을 지정해요.

참고: 대상 데이터베이스는 이미 존재해야 해요. 또한 새 위치에 같은 이름의 스키마가 이미 있으면 안 돼요. 그렇지 않으면 문이 오류를 반환해요. 객체 이름을 바꾸면, 그 객체를 참조하는 다른 객체도 새 이름으로 업데이트해야 해요.

SWAP WITH target_schema_name — 두 지정 스키마 사이의 모든 객체(테이블, 뷰 등)와 식별자를 포함한 메타데이터를 교체해요. 스키마와 그 안의 객체에 부여된 모든 접근 제어 권한도 교체해요. SWAP WITH는 기본적으로 두 스키마의 이름 변경을 단일 작업으로 수행해요.

SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 스키마에 설정할 하나 이상의 속성을 지정해요:

DATA_RETENTION_TIME_IN_DAYS = integer — 스키마에 대해 Time Travel 작업(CLONE과 UNDROP)을 수행할 수 있는 일수와, 스키마에서 만들어진 모든 테이블의 기본 Time Travel 보존 시간을 지정해요.

지정할 수 있는 값은 Snowflake 에디션에 따라 달라져요:

  • Standard Edition: 0 또는 1
  • Enterprise Edition(이상): 0 ~ 90

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer — 테이블의 스트림이 stale(오래됨) 상태가 되지 않도록 스키마의 테이블에 대해 Snowflake가 데이터 보존 기간을 연장할 수 있는 최대 일수를 지정하는 객체 매개변수예요. 자세한 설명은 MAX_DATA_EXTENSION_TIME_IN_DAYS를 참고하세요.

EXTERNAL_VOLUME = external_volume_nameApache Iceberg™ 테이블에 사용할 기본 외부 볼륨을 지정하는 객체 매개변수예요. 자세한 내용은 EXTERNAL_VOLUME을 참고하세요.

CATALOG = catalog_integration_nameApache Iceberg™ 테이블에 사용할 기본 카탈로그 통합을 지정하는 객체 매개변수예요. 자세한 내용은 CATALOG을 참고하세요.

ICEBERG_DEFAULT_DDL_COLLATION = 'collation_specification' — Snowflake 관리형 Iceberg 테이블의 새 문자열 열에 대한 기본 collation 지정을 지정해요. 자세한 내용은 ICEBERG_DEFAULT_DDL_COLLATION을 참고하세요.

ICEBERG_VERSION_DEFAULT = integer — Iceberg 테이블이 준수하는 Apache Iceberg™ 테이블 사양의 버전을 지정해요.

값:

  • 2: 새 테이블은 Iceberg 버전 2를 준수해요.
  • 3: 새 테이블은 Iceberg 버전 3을 준수해요.

주의: 다른 엔진으로 Iceberg 테이블의 형식 버전을 테이블 속성에서 v3로 업그레이드하기 전에, 아직 v3를 지원하지 않는 엔진이나 애플리케이션이 그 테이블을 사용하지 않는지 확인해요. Apache Iceberg 사양에서는 형식 버전 다운그레이드를 지원하지 않아요. 따라서 모든 리더와 라이터가 v3를 지원해야 해요. Snowflake의 Iceberg 테이블 기본 버전은 v2이며, 필요하면 v3으로 구성할 수 있어요. 현재 시점에 Snowflake로 제자리(in-place) 버전 업그레이드를 수행하는 것은 지원되지 않아요.

기본값: 2

자세한 내용은 ICEBERG_VERSION_DEFAULT를 참고하세요.

ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } — Snowflake가 Apache Iceberg™ 테이블에서 행 수준 업데이트(UPDATE, DELETE, MERGE)를 수행하는 방식을 지정해요. merge-on-read(데이터와 함께 Iceberg delete 파일을 기록)와 copy-on-write(전체 데이터 파일을 다시 기록) 중에서 선택해요.

매개변수 값은 대소문자를 구분하지 않아요.

값:

  • 'AUTO': Snowflake가 테이블의 Iceberg 형식 버전과 관리 모드에 따라 merge-on-read 또는 copy-on-write를 선택해요. 자세한 내용은 ICEBERG_MERGE_ON_READ_BEHAVIOR 매개변수를 참고하세요.
  • 'ENABLED': 이 매개변수가 적용되는 모든 Apache Iceberg™ 테이블에서 형식 버전이나 관리 모드와 무관하게 merge-on-read를 활성화해요.
  • 'DISABLED': 이 매개변수가 적용되는 모든 Apache Iceberg™ 테이블에서 merge-on-read를 비활성화해요. 모든 DML은 copy-on-write를 사용해요.

기본값: 'AUTO'

자세한 설명은 ICEBERG_MERGE_ON_READ_BEHAVIOR 매개변수를, Snowflake의 merge-on-read와 copy-on-write 동작에 대한 자세한 내용은 행 수준 삭제 사용을 참고하세요.

ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } — 경고: 이 매개변수는 더 이상 사용되지 않아요(deprecated). 대신 ICEBERG_MERGE_ON_READ_BEHAVIOR를 사용해요. 레거시 매개변수는 ICEBERG_MERGE_ON_READ_BEHAVIOR가 기본값('AUTO')일 때만 여전히 존중되며, 향후 릴리스에서는 오류를 반환할 거예요.

Apache Iceberg™ 테이블에 대해 merge-on-read 동작을 활성화할지 여부를 지정해요.

값:

  • TRUE: 새 테이블은 merge-on-read 동작을 사용해요. v2 테이블의 경우 Snowflake는 행 수준 삭제에 위치 기반(positional) 삭제 파일을 사용해요. v3 테이블의 경우 Snowflake는 조건이 충족될 때 삭제 벡터(deletion vectors)를 사용해요.

    참고: 이 매개변수를 TRUE로 설정해도 Snowflake 관리형 v2 Iceberg 테이블에는 merge-on-read가 활성화되지 않아요. ICEBERG_MERGE_ON_READ_BEHAVIOR가 기본값('AUTO')일 때 이 설정은 자동 매트릭스를 거치며, Snowflake 관리형 v2 테이블은 copy-on-write로 유지돼요. Snowflake 관리형 v2 테이블에 merge-on-read를 활성화하려면 ICEBERG_MERGE_ON_READ_BEHAVIOR = 'ENABLED'를 명시적으로 설정해요.

  • FALSE: 새 테이블은 copy-on-write 동작을 사용해요.

기본값: TRUE

자세한 설명은 Deprecated: ENABLE_ICEBERG_MERGE_ON_READ를 참고하세요. Snowflake의 merge-on-read와 copy-on-write 동작에 대한 자세한 내용은 행 수준 삭제 사용을 참고하세요.

REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }Iceberg 테이블의 쿼리 결과에서 잘못된 UTF-8 문자를 유니코드 대체 문자(�)로 바꿀지 여부를 지정해요. 이 매개변수는 외부 Iceberg 카탈로그를 사용하는 테이블에서만 설정할 수 있어요.

  • TRUE는 잘못된 UTF-8 문자를 유니코드 대체 문자로 바꿔요.
  • FALSE는 잘못된 UTF-8 문자를 그대로 둬요. Snowflake는 Parquet 데이터 파일에서 잘못된 UTF-8 문자를 만나면 사용자 오류 메시지를 반환해요.

기본값: FALSE

DEFAULT_DDL_COLLATION = 'collation_specification' — 다음 항목에 대한 기본 collation 지정을 지정해요:

  • 스키마의 기존 테이블에 추가되는 새 열.
  • 스키마에 추가되는 새 테이블의 모든 열.

이 매개변수를 설정해도 기존 열의 collation 지정은 변경되지 않아요. 자세한 내용은 DEFAULT_DDL_COLLATION을 참고하세요.

DEFAULT_NOTEBOOK_COMPUTE_POOL_CPU = compute_pool_name — Notebook을 실행하기 위해 Snowflake가 계정에 프로비저닝한 기본 CPU 컴퓨트 풀을 재정의하는 CPU 컴퓨트 풀 이름이에요. 자세한 내용은 시스템 컴퓨트 풀을 참고하세요.

DEFAULT_NOTEBOOK_COMPUTE_POOL_GPU = compute_pool_name — Notebook을 실행하기 위해 Snowflake가 계정에 프로비저닝한 기본 GPU 컴퓨트 풀을 재정의하는 GPU 컴퓨트 풀 이름이에요. 자세한 내용은 시스템 컴퓨트 풀을 참고하세요.

LOG_LEVEL = 'log_level' — 활성 이벤트 테이블에 수집되어 제공할 메시지의 심각도 수준을 지정해요. 지정된 수준(및 그보다 심각한 수준)의 메시지가 수집돼요. 수준에 대한 자세한 내용은 LOG_LEVEL을, 로그 수준 설정에 대해서는 로깅, 메트릭, 추적 수준 설정을 참고하세요.

TRACE_LEVEL = 'trace_level' — 추적 이벤트를 이벤트 테이블로 수집하는 방식을 제어해요. 수준에 대한 정보는 TRACE_LEVEL을, 추적 수준 설정에 대해서는 로깅, 메트릭, 추적 수준 설정을 참고하세요.

STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } — Snowflake를 카탈로그로 사용하는 Apache Iceberg™ 테이블의 스토리지 직렬화 정책을 지정해요.

  • COMPATIBLE: Snowflake가 서드파티 컴퓨트 엔진과의 상호 운용성을 보장하는 인코딩과 압축을 수행해요.
  • OPTIMIZED: Snowflake가 Snowflake 내에서 최상의 테이블 성능을 보장하는 인코딩과 압축을 수행해요.

기본값: OPTIMIZED

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]태그 이름과 태그 문자열 값을 지정해요.

태그 값은 항상 문자열이며, 최대 문자 수는 256이에요. 문에서 태그를 지정하는 방법은 태그 할당량을 참고하세요.

CONTACT purpose = contact [ , purpose = contact ... ] — 기존 객체를 하나 이상의 연락처와 연결해요. 유효한 목적 목록은 객체에 연락처 연결을 참고하세요. 같은 문에서 CONTACT 속성을 다른 속성과 함께 설정할 수 없어요.

CLASSIFICATION_PROFILE = 'profile_name' — 스키마를 분류 프로필과 연결해 스키마의 민감 데이터가 자동으로 분류되게 해요.

COMMENT = 'string_literal' — 스키마의 주석을 추가하거나 기존 주석을 덮어써요.

CATALOG_SYNC = 'snowflake_open_catalog_integration_name'Snowflake Open Catalog용으로 구성된 카탈로그 통합의 이름을 지정해요. 지정되면 Snowflake는 스키마의 Snowflake 관리형 Apache Iceberg™ 테이블을 Snowflake Open Catalog 계정의 외부 카탈로그와 동기화해요. Open Catalog와 Snowflake 관리형 Iceberg 테이블 동기화에 대한 자세한 내용은 Snowflake 관리형 테이블을 Snowflake Open Catalog와 동기화를 참고하세요. 이 매개변수에 대한 자세한 내용은 CATALOG_SYNC을 참고하세요.

기본값: 값 없음

REPLICABLE_WITH_FAILOVER_GROUPS = { 'YES' | 'NO' } — 이 스키마가 복제에 적격한지 여부를 지정해요. 데이터베이스 내 개별 스키마가 복제되지 않도록 하려면 이 속성을 NO로 설정할 수 있어요. 이 매개변수에 대한 자세한 내용은 페일오버 그룹용 스키마 수준 복제를 참고하세요.

기본값: 'YES'

DEFAULT_STREAMLIT_NOTEBOOK_WAREHOUSE = 'warehouse_name' — SQL로 Notebook을 만들 때 사용할 기본 웨어하우스를 지정해요.

BASE_LOCATION_PREFIX = 'string' — Snowflake 관리형 Apache Iceberg™ 테이블의 쓰기 경로에 Snowflake가 사용할 접두사를 지정해요. 자세한 내용은 Iceberg 테이블 데이터 및 메타데이터 디렉터리와 Snowflake Parameters 항목의 BASE_LOCATION_PREFIX를 참고하세요.

기본값: 값 없음

OBJECT_VISIBILITY = PRIVILEGEDPreview Feature — 공개. 모든 계정에서 사용할 수 있어요. 현재 계정 내에서 객체에 명시적 권한이 부여된 역할만 그 객체를 볼 수 있게 지정해요. 이것은 Snowflake의 기본 동작이에요. 예시는 Universal Search에서 데이터베이스 객체를 검색 가능하게 만들기를 참고하세요.

ENABLE_DATA_COMPACTION = { TRUE | FALSE } — Snowflake가 Snowflake 관리형 Apache Iceberg™ 테이블에서 데이터 압축(compaction)을 활성화할지 여부를 지정해요.

  • TRUE: Snowflake가 테이블에 데이터 압축을 수행해요.
  • FALSE: Snowflake가 테이블에 데이터 압축을 수행하지 않아요.

기본값: TRUE

자세한 내용은 ENABLE_DATA_COMPACTION데이터 압축 설정을 참고하세요.

OAUTH_AUTHORIZATION_SERVER = integration_name — 이 스키마의 MCP 서버에 대한 인증 서버로 사용할 외부 OAuth 보안 통합의 이름을 지정해요. 설정되면 Snowflake는 이 스키마의 MCP 서버에 대한 Protected Resource Metadata 엔드포인트에 외부 발급자(issuer)를 광고하고, 지정된 인증 서버가 발급하지 않은 OAuth 토큰을 거부해요. 이 적용은 MCP 서버 엔드포인트에 대한 OAuth 호출에만 적용돼요.

유효한 EXTERNAL_OAUTH 보안 통합이어야 해요. 통합은 SET 시점에 존재해야 해요. 통합이 나중에 삭제되거나 비활성화되면 Protected Resource Metadata 엔드포인트는 빈 authorization_servers 목록을 게시하고 Snowflake OAuth로 폴백하지 않아요.

이 매개변수는 Snowflake 표준 계정/데이터베이스/스키마 계보 상속을 따르며, 스키마 수준 값이 데이터베이스 수준이나 계정 수준 값을 재정의해요.

기본값: 값 없음 (데이터베이스나 계정에서 상속하거나, 모든 수준에서 설정되지 않으면 Snowflake OAuth 사용)

자세한 내용은 MCP 서버용 외부 OAuth 인증 구성OAUTH_AUTHORIZATION_SERVER를 참고하세요.

OAUTH_SCOPES_SUPPORTED = 'comma_separated_scopes' — 이 스키마의 MCP 서버에 대한 Protected Resource Metadata 엔드포인트에서 광고할 OAuth 스코프의 콤마 구분 목록을 지정해요. 허용되는 스코프 값과 SET 시점 검증 규칙은 OAUTH_SCOPES_SUPPORTED를 참고하세요.

OAUTH_AUTHORIZATION_SERVER도 설정되어 있으면 광고되는 스코프는 이 매개변수의 스코프예요. OAUTH_AUTHORIZATION_SERVER 없이 OAUTH_SCOPES_SUPPORTED만 설정하면 Snowflake는 지정된 스코프를 Snowflake OAuth와 함께 사용해요.

이 매개변수는 계정/데이터베이스/스키마 계보 상속을 따르며, 스키마 수준 값이 데이터베이스 수준이나 계정 수준 값을 재정의해요.

기본값: 값 없음 (데이터베이스나 계정에서 상속). Snowflake OAuth로 모든 수준에서 설정되지 않으면 session:role:all을 광고해요. OAUTH_AUTHORIZATION_SERVER가 설정된 상태에서 설정되지 않으면, 통합에 EXTERNAL_OAUTH_ANY_ROLE_MODE = ENABLE 또는 ENABLE_FOR_PRIVILEGE가 있을 때 session:role-any를 광고하고, 그렇지 않으면 빈 목록을 광고해요.

자세한 내용은 MCP 서버용 외부 OAuth 인증 구성OAUTH_SCOPES_SUPPORTED를 참고하세요.

UNSET ... — 데이터베이스의 하나 이상의 속성 및/또는 매개변수를 해제해 기본값으로 되돌려요:

  • DATA_RETENTION_TIME_IN_DAYS, MAX_DATA_EXTENSION_TIME_IN_DAYS, EXTERNAL_VOLUME, CATALOG, ICEBERG_DEFAULT_DDL_COLLATION, ICEBERG_VERSION_DEFAULT, ICEBERG_MERGE_ON_READ_BEHAVIOR, ENABLE_ICEBERG_MERGE_ON_READ, REPLACE_INVALID_CHARACTERS, DEFAULT_DDL_COLLATION, TAG tag_name [ , tag_name ... ], LOG_LEVEL, TRACE_LEVEL, STORAGE_SERIALIZATION_POLICY, COMMENT, CATALOG_SYNC, REPLICABLE_WITH_FAILOVER_GROUPS, BASE_LOCATION_PREFIX, DEFAULT_STREAMLIT_NOTEBOOK_WAREHOUSE, CONTACT purpose, CLASSIFICATION_PROFILE, OBJECT_VISIBILITY, ENABLE_DATA_COMPACTION, OAUTH_AUTHORIZATION_SERVER, OAUTH_SCOPES_SUPPORTED

하나의 ALTER 문으로 여러 속성/매개변수를 재설정할 수 있어요. 다만 각 속성/매개변수는 콤마로 구분해야 해요. 속성/매개변수를 재설정할 때는 이름만 지정해야 하며, 값을 지정하면 오류가 반환돼요.

UNSET DCM PROJECT — 현재 스키마를 관리하는 DCM 프로젝트에서 스키마를 분리해요. 이 명령은 스키마를 삭제하지 않고 스키마와 DCM 프로젝트 간의 연결을 제거해요. 자세한 내용은 DCM 프로젝트에서 객체 분리를 참고하세요.

{ ENABLE | DISABLE } MANAGED ACCESS — 스키마에 관리형 접근(managed access)을 활성화하거나, 비활성화해 관리형 접근 스키마를 일반 스키마로 변환해요. 관리형 접근 스키마는 권한 관리를 스키마 소유자에게 중앙화해요.

일반 스키마에서는 객체 소유자(즉 객체에 OWNERSHIP 권한이 있는 역할)가 자신의 객체에 대한 추가 권한을 다른 역할에 부여할 수 있어요. 관리형 접근 스키마에서는 스키마 소유자가 미래 권한(future grants)을 포함해 스키마의 객체에 대한 모든 권한 부여를 관리해요. 객체 소유자는 객체에 대한 OWNERSHIP 권한을 유지하지만, 객체에 대한 권한 부여를 관리할 수 있는 것은 스키마 소유자뿐이에요.

사용 메모 (Usage notes)

  • 스키마 이름을 바꾸려면 작업을 수행하는 역할에 스키마의 데이터베이스에 대한 CREATE SCHEMA 권한과 스키마에 대한 OWNERSHIP 권한이 있어야 해요.

  • 두 스키마를 교체하려면 작업을 수행하는 역할에 두 스키마 모두에 대한 OWNERSHIP 권한이 있어야 해요.

  • 일반 스키마를 관리형 접근 스키마로 변환하려면:

    • 스키마 소유자(즉 스키마에 OWNERSHIP 권한이 있는 역할)도 전역 MANAGE GRANTS 권한이 있어야 해요. MANAGE GRANTS 권한이 필요합니다. 그 이유는 이 권한이 있는 다른 역할이 스키마의 특정 유형 객체에 미래 권한을 정의했을 수 있기 때문이에요. 일반 스키마가 관리형 접근 스키마가 된 후 스키마 소유자는 MANAGE GRANTS 권한이 있는 역할이 권한을 부여한 이유를 이해하지 못한 채 미래 권한을 취소할 수 있어요.
    • 모든 열린 미래 권한은 FUTURE 키워드로 REVOKE <privileges> … FROM ROLE을 사용해 취소해야 해요.

    일반 스키마가 관리형 접근 스키마로 변환된 후에도 개별 객체에 이전에 부여된 모든 권한은 유지되지만, 객체 소유자는 그 객체에 추가 권한을 부여할 수 없어요.

  • 관리형 접근 스키마를 일반 스키마로 변환하려면, 현재 스키마에 미래 권한 부여가 정의된 경우에만 스키마 소유자에게 전역 MANAGE GRANTS 권한도 있어야 해요.

  • 카탈로그 연결 데이터베이스의 스키마에 대해 이 명령은 다음 매개변수만 지원해요:

    • 다음 옵션으로 SET/UNSET: CLASSIFICATION_PROFILE, COMMENT, CONTACT, STORAGE_SERIALIZATION_POLICY, TAG
    • ENABLE MANAGED ACCESS, DISABLE MANAGED ACCESS
  • Iceberg 테이블이 준수하는 Apache Iceberg™ 사양의 기본 버전을 지정하려면 작업을 수행하는 역할에 스키마에 대한 OWNERSHIP 권한이 있어야 해요.

  • 메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.

예시 (Examples)

스키마 schema1의 이름을 schema2로 변경해요.

ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;

일반 스키마를 관리형 접근 스키마로 변환해요.

ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;

더 알아보기 (Learn more)