ALTER SCHEMA¶
스키마 이름 바꾸기 또는 스키마를 다른 스키마로 바꾸기와 Time Travel 데이터 보존 기간 변경(Snowflake Enterprise Edition 이상을 사용하는 경우)을 포함하여 기존 스키마의 속성을 수정합니다.
- 참고 항목:
CREATE SCHEMA , DESCRIBE SCHEMA , DROP SCHEMA , SHOW SCHEMAS , UNDROP SCHEMA
구문¶
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> ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ LOG_LEVEL = '<log_level>' ]
[ TRACE_LEVEL = '<trace_level>' ]
[ COMMENT = '<string_literal>' ]
}
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 |
DEFAULT_DDL_COLLATION |
LOG_LEVEL |
TRACE_LEVEL |
COMMENT
}
[ , ... ]
ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS
매개 변수¶
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 Edition에 따라 다릅니다.
Standard Edition:
0
또는1
Enterprise Edition(또는 그 이상):
0
~90
MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
Snowflake가 테이블의 스트림이 부실해지는 것을 방지하기 위해 스키마에 있는 테이블의 데이터 보존 기간을 연장할 수 있는 최대 일수를 지정하는 오브젝트 매개 변수입니다.
이 매개 변수에 대한 자세한 설명은 MAX_DATA_EXTENSION_TIME_IN_DAYS 섹션을 참조하십시오.
EXTERNAL_VOLUME = external_volume_name
Iceberg 테이블 에 사용할 기본 외부 볼륨을 지정하는 오브젝트 매개 변수입니다.
이 매개 변수에 대한 자세한 내용은 EXTERNAL_VOLUME 를 참조하십시오.
CATALOG = catalog_integration_name
Iceberg 테이블 에 사용할 기본 카탈로그 통합을 지정하는 오브젝트 매개 변수입니다.
이 매개 변수에 대한 자세한 내용은 CATALOG 를 참조하십시오.
DEFAULT_DDL_COLLATION = 'collation_specification'
다음에 대한 기본 데이터 정렬 사양 을 지정합니다.
스키마의 기존 테이블에 추가된 모든 새 열.
새 테이블의 모든 열이 스키마에 추가됩니다.
이 매개 변수를 설정해도 기존 열의 데이터 정렬 사양은 변경되지 않습니다.
이 매개 변수에 대한 자세한 내용은 DEFAULT_DDL_COLLATION 을 참조하십시오.
LOG_LEVEL = 'log_level'
수집하여 활성 이벤트 테이블에서 사용 가능하도록 해야 하는 메시지의 심각도 수준을 지정합니다. 지정된 수준과 더 심각한 수준의 메시지가 수집됩니다.
수준에 대한 자세한 내용은 LOG_LEVEL 섹션을 참조하십시오. 로그 수준 설정에 대한 자세한 내용은 로그 수준 설정하기 섹션을 참조하십시오.
TRACE_LEVEL = 'trace_level'
추적 이벤트가 이벤트 테이블에 수집되는 방식을 제어합니다.
수준에 대한 자세한 내용은 TRACE_LEVEL 섹션을 참조하십시오. 추적 수준 설정에 대한 자세한 내용은 추적 수준 설정하기 섹션을 참조하십시오.
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.
COMMENT = 'string_literal'
스키마에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.
UNSET ...
데이터베이스에 대해 설정 해제할 하나 이상의 속성 및/또는 매개 변수를 지정하여 이들을 기본값으로 재설정합니다.
DATA_RETENTION_TIME_IN_DAYS
MAX_DATA_EXTENSION_TIME_IN_DAYS
EXTERNAL_VOLUME
CATALOG
DEFAULT_DDL_COLLATION
TAG tag_name [ , tag_name ... ]
COMMENT
단일 ALTER 문으로 여러 속성/매개 변수를 재설정할 수 있지만, 각 속성/매개 변수는 쉼표로 구분해야 합니다. 속성/매개 변수를 재설정할 때는 이름만 지정하십시오. 속성 값을 지정하면 오류가 반환됩니다.
ENABLE | DISABLE MANAGED ACCESS
스키마의 관리되는 액세스를 활성화하거나, 관리되는 액세스 스키마를 일반 스키마로 변환하려면 이를 비활성화하십시오. 관리되는 액세스 스키마는 스키마 소유자와 함께 권한 관리를 중앙 집중화합니다.
일반 스키마에서 오브젝트의 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한을 가진 역할)는 자신의 오브젝트에 대한 추가 권한을 다른 역할에 부여할 수 있습니다. 관리되는 액세스 스키마에서 스키마 소유자는 스키마의 오브젝트에 대해 향후의 권한 부여 를 포함한 모든 권한 부여를 관리합니다. 오브젝트 소유자는 오브젝트에 대한 OWNERSHIP 권한을 유지하지만, 스키마 소유자만이 오브젝트에 대한 권한 부여를 관리할 수 있습니다.
사용법 노트¶
스키마 이름을 바꾸려면 작업을 수행하는 데 사용되는 역할에 스키마용 데이터베이스에 대한 CREATE SCHEMA 권한과 스키마에 대한 OWNERSHIP 권한이 있어야 합니다.
두 스키마를 서로 바꾸려면 작업을 수행하는 데 사용되는 역할에 두 스키마 모두에 대한 OWNERSHIP 권한이 있어야 합니다.
일반 스키마를 관리되는 액세스 스키마로 변환:
스키마 소유자(즉, 스키마에 대한 OWNERSHIP 권한을 가진 역할)가 전역 MANAGE GRANTS 권한도 가지고 있어야 합니다. 이 권한이 있는 다른 역할이 스키마에서 지정된 유형의 오브젝트에 대한 향후 권한 부여를 정의했을 수 있으므로 MANAGE GRANTS 권한이 필요합니다. 일반 스키마가 관리되는 액세스 스키마가 된 후, 스키마 소유자는 MANAGE GRANTS 권한을 가진 역할에 이러한 권한이 부여된 이유를 이해하지 못한 채 향후 권한 부여를 취소할 수 있습니다.
FUTURE 키워드로 REVOKE <권한> 을 사용하여 공개된 모든 향후 권한 부여를 취소해야 합니다.
일반 스키마가 관리되는 액세스 스키마로 변환된 후 개별 오브젝트에 대해 이전에 부여된 모든 권한이 유지되지만, 오브젝트 소유자가 그와 같은 오브젝트에 대한 추가 권한을 부여할 수는 없습니다.
관리되는 액세스 스키마를 일반 스키마로 변환하려면 현재 스키마에 향후 권한 부여가 정의되어 있는 경우에만 스키마 소유자에게 전역 MANAGE GRANTS 권한도 있어야 합니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
스키마 이름을 schema1
에서 schema2
로 바꾸기:
ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;
일반 스키마를 관리되는 액세스 스키마로 변환:
ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;