SHOW SERVICES
SHOW SERVICES
액세스 권한이 있는 Snowpark Container Services 서비스(작업 서비스 job service 포함)를 나열하는 명령이에요.
출처: 문서
본문
기능 — 일반 사용 가능(Generally Available): Snowpark Container Services는 일부 예외를 제외하고 AWS, Microsoft Azure, Google Cloud Platform 상용 리전의 계정에서 사용할 수 있어요. 자세한 내용은 사용 가능한 리전 및 고려 사항을 참고해요.
액세스 권한이 있는 Snowpark Container Services 서비스(작업 서비스 포함)를 나열해요. SHOW SERVICES 출력에는 작업으로 실행되는 서비스도 포함돼요(EXECUTE JOB SERVICE 참고). SHOW JOB SERVICES는 작업으로 실행되는 서비스의 목록만 제공해요. SHOW SERVICES EXCLUDE JOBS 출력은 작업으로 실행되는 서비스를 포함하지 않아요.
구문
SHOW [ JOB ] SERVICES [ EXCLUDE JOBS ] [ LIKE '<pattern>' ]
[ IN
{
ACCOUNT |
DATABASE |
DATABASE <database_name> |
SCHEMA |
SCHEMA <schema_name> |
<schema_name> |
COMPUTE POOL <compute_pool_name>
}
]
[ STARTS WITH '<name_string>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
[ OF TYPE <workload_type> [ , ... ] ]
매개변수
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
[ IN ... ]
선택적으로 명령의 범위를 지정해요. 다음 중 하나를 지정해요:
- ACCOUNT: 전체 계정에 대한 레코드를 반환해요.
- DATABASE, DATABASE db_name: 현재 사용 중인 데이터베이스 또는 지정한 데이터베이스(db_name)에 대한 레코드를 반환해요. DATABASE를 db_name 없이 지정했는데 사용 중인 데이터베이스가 없으면 이 키워드는 출력에 영향을 주지 않아요.
- SCHEMA, SCHEMA schema_name: 현재 사용 중인 스키마 또는 지정한 스키마(schema_name)에 대한 레코드를 반환해요. SCHEMA는 데이터베이스를 사용 중이거나 정규화된 schema_name(예: db.schema)을 지정한 경우 선택 사항이에요. 사용 중인 데이터베이스가 없으면 SCHEMA를 지정해도 출력에 영향을 주지 않아요.
- COMPUTE POOL compute_pool_name: 지정된 컴퓨트 풀에서 실행되는 서비스에 대한 레코드를 반환해요.
IN ... 을 생략하면 명령의 범위는 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:
- 데이터베이스를 현재 사용 중이면, 명령은 데이터베이스에서 볼 권한이 있는 객체를 반환해요. 이는
IN DATABASE를 지정한 것과 같은 효과예요. - 사용 중인 데이터베이스가 없으면, 명령은 계정에서 볼 권한이 있는 객체를 반환해요. 이는
IN ACCOUNT를 지정한 것과 같은 효과예요.
참고: 데이터베이스 컨텍스트에서 IN 절 없이 SHOW 명령을 사용하면 예상보다 적은 결과가 나올 수 있어요. IN 절을 사용하지 않으면 같은 이름의 객체는 한 번만 표시돼요.
STARTS WITH 'name_string'
선택적으로 객체 이름의 시작 부분에 나타나는 문자를 기준으로 명령 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 예를 들어 다음 문자열들은 다른 결과를 반환해요:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
LIMIT
선택적으로 반환되는 최대 행 수를 제한해요. 반환되는 실제 행 수는 지정된 제한보다 적을 수 있어요. 기본값: 값 없음(출력에 제한이 적용되지 않음).
OF TYPE workload_type [ , ... ]
선택적으로 워크로드 유형으로 명령 출력을 필터링해요. 사용 가능한 워크로드 유형 목록은 ALLOWED_SPCS_WORKLOAD_TYPES를 참고해요. 필터는 대소문자를 구분하지 않아요. 기본값: ALL.
출력
명령 출력은 서비스 속성과 메타데이터를 다음 컬럼으로 제공해요:
| 컬럼 | 설명 |
|---|---|
| name | Snowpark Container Services 서비스 이름이에요. |
| status | 서비스의 현재 상태를 나타내는 값 중 하나예요: PENDING, RUNNING, FAILED, DONE, CANCELLING(작업 서비스 전용), CANCELLED(작업 서비스 전용), SUSPENDING, SUSPENDED, DELETING, DELETED, INTERNAL_ERROR. |
| database_name | 서비스가 생성된 데이터베이스예요. |
| schema_name | 서비스가 생성된 스키마예요. |
| owner | 서비스를 소유하는 역할이에요. |
| compute_pool | Snowflake가 서비스를 실행하는 컴퓨트 풀 이름이에요. |
| dns_name | service-name.unique-id.svc.spcs.internal 형식의 Snowflake 할당 DNS 이름이에요. unique-id는 특정 데이터베이스 스키마 인스턴스에 고유한 4~8자 영숫자 식별자예요. 스키마의 고유 ID를 찾으려면 SYSTEM$GET_SERVICE_DNS_DOMAIN 함수를 호출해요. 예를 들어: |
SELECT SYSTEM$GET_SERVICE_DNS_DOMAIN('mydb.myschema');
참고: 스키마 이름을 바꿔도 식별자는 변경되지 않아요. 스키마를 드롭하고 같은 이름으로 다시 만들면 식별자가 변경돼요. DNS 이름은 서비스 간 통신을 가능하게 해요(튜토리얼 4 참고). | | current_instances | 서비스의 현재 인스턴스 수예요. | | target_instances | Snowflake가 결정한, 실행되어야 하는 서비스 인스턴스의 대상 수예요. current_instances 값이 target_instances 값과 같지 않으면 Snowflake가 서비스 인스턴스를 종료하거나 시작하는 과정 중이에요. 예를 들어 MIN_INSTANCES = 1, MAX_INSTANCES = 3인 서비스를 만들었다고 해보죠. 서비스가 실행되는 동안 Snowflake가 인스턴스 하나로는 부족하다고 판단할 수 있어요. 이 경우 target_instances 값이 증가하면서 Snowflake가 추가 인스턴스를 시작하는 과정 중임을 나타내요. target_instances 값이 current_instances 값보다 작을 수도 있는데, 이는 Snowflake가 실행 중인 인스턴스 수를 줄이는 과정 중임을 의미해요. 컴퓨트 풀에 요청한 최소 인스턴스 수를 위한 용량이 없으면 target_instances 값은 min_instances 값과 같아지고, current_instances 값은 target_instances 값보다 작아져요. | | min_ready_instances | Snowflake가 서비스를 요청 처리 준비가 되었다고 간주하기 위해 준비되어야 하는 최소 서비스 인스턴스를 나타내요. | | min_instances | Snowflake가 실행해야 하는 최소 서비스 인스턴스 수예요. | | max_instances | 필요할 때 Snowflake가 확장할 수 있는 최대 서비스 인스턴스 수예요. | | auto_resume | true면 서비스 함수가 호출되거나 들어오는 요청(ingress)이 수신될 때, Snowflake가 중단된 서비스를 자동 재개해요(서비스 사용(Using a service) 참고). | | external_access_integrations | 서비스와 연결된 외부 액세스 통합 목록이에요. 자세한 내용은 서비스 이그레스 구성(Configure service egress)을 참고해요. | | created_on | 서비스가 생성된 날짜와 시각이에요. | | updated_on | 서비스가 마지막으로 업데이트된 날짜와 시각이에요. | | resumed_on | 서비스가 마지막으로 재개된 타임스탬프예요. | | suspended_on | 서비스가 마지막으로 중단된 타임스탬프예요. suspended_on은 Snowflake가 서비스를 중단할 때 설정되며, 서비스가 재개된 후에도 변경되지 않아요. suspended_on이 NULL이면 서비스가 중단된 적이 없는 거예요. | | auto_suspend_secs | 비활성화 후 Snowflake가 서비스를 자동 중단하는 초 수예요. auto_suspend_secs가 0으로 설정되거나 설정되지 않으면 Snowflake는 서비스를 자동 중단하지 않아요. | | comment | 서비스 관련 주석이에요. | | owner_role_type | 객체를 소유하는 역할의 유형으로, ROLE 또는 DATABASE_ROLE이에요. | | query_warehouse | 서비스 컨테이너가 Snowflake에 연결해 쿼리를 실행할 때 웨어하우스를 명시적으로 지정하지 않으면, Snowflake가 기본값으로 사용하는 웨어하우스예요. | | is_job | 서비스가 작업 서비스이면 true, 그렇지 않으면 false예요. SHOW JOB SERVICES와 SHOW SERVICES EXCLUDE JOBS는 이 컬럼을 출력에 포함하지 않아요. | | is_async_job | TRUE면 작업 서비스가 비동기적으로 실행 중이에요. 기본적으로 Snowflake는 작업 서비스를 동기적으로 실행해요. 이 컬럼은 SHOW SERVICES와 SHOW JOB SERVICES 명령의 출력에 포함되지만 SHOW SERVICES EXCLUDING JOBS 명령의 출력에는 포함되지 않아요. | | spec_digest | 서비스 명세 내용을 나타내는 고유하고 변경 불가한 식별자예요. 시간에 따른 spec_digest 컬럼 값의 변화를 관찰하려면 서비스 사용자가 SHOW SERVICES 명령을 주기적으로 실행할 수 있어요. 변화를 발견하면 서비스가 업그레이드되었음을 추론할 수 있어요. | | is_upgrading | Snowflake가 서비스 업그레이드 과정 중이면 TRUE예요. | | managing_object_domain | 관리 객체의 도메인(예: 서비스를 관리하는 노트북의 도메인)이에요. 서비스가 Snowflake 엔티티에 의해 관리되지 않으면 NULL이에요. | | managing_object_name | 관리 객체의 이름(예: 서비스를 관리하는 노트북의 이름)이에요. 서비스가 Snowflake 엔티티에 의해 관리되지 않으면 NULL이에요. |
액세스 제어 요구 사항
이 SQL 명령을 실행하는 데 사용되는 역할은 최소한 다음 권한 중 하나를 가져야 해요:
| 권한 | 객체 | 참고 |
|---|---|---|
| 이 중 하나: OWNERSHIP, USAGE, MONITOR 또는 OPERATE | Service |
스키마의 객체를 운영하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요해요. 지정된 권한 집합으로 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기(Creating custom roles)를 참고해요. 보안 객체에 대한 SQL 작업 수행을 위한 역할·권한 부여에 대한 일반 정보는 액세스 제어 개요(Overview of Access Control)를 참고해요.
사용 메모
- 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. - 이 명령은 명령을 실행하는 역할의 액세스 권한에 따라 지정한 객체 유형에 대해 최대 1만 개의 레코드를 반환해요. 1만 개를 초과하는 결과를 보려면 Snowflake 정보 스키마의 해당 뷰(존재하는 경우)를 쿼리해요.
예제
다음 예제는 세션의 현재 데이터베이스와 스키마의 서비스를 나열해요:
SHOW SERVICES;
샘플 출력:
+--------------+---------+---------------+-------------+-----------+-----------------------+-------------------------------------+-------------------+------------------+---------------------+---------------+---------------+-------------+------------------------------+-------------------------------+-------------------------------+------------+--------------+-------------------+---------+-----------------+-----------------+--------+--------------+------------------------------------------------------------------+--------------+------------------------+----------------------+
| name | status | database_name | schema_name | owner | compute_pool | dns_name | current_instances | target_instances | min_ready_instances | min_instances | max_instances | auto_resume | external_access_integrations | created_on | updated_on | resumed_on | suspended_on | auto_suspend_secs | comment | owner_role_type | query_warehouse | is_job | is_async_job | spec_digest | is_upgrading | managing_object_domain | managing_object_name |
|--------------+---------+---------------+-------------+-----------+-----------------------+-------------------------------------+-------------------+------------------+---------------------+---------------+---------------+-------------+------------------------------+-------------------------------+-------------------------------+------------+--------------+-------------------+---------+-----------------+-----------------+--------+--------------+------------------------------------------------------------------+--------------+------------------------+----------------------|
| ECHO_SERVICE | RUNNING | TUTORIAL_DB | DATA_SCHEMA | TEST_ROLE | TUTORIAL_COMPUTE_POOL | echo-service.k3m6.svc.spcs.internal | 1 | 1 | 1 | 1 | 1 | true | NULL | 2024-11-29 12:12:47.310 -0800 | 2024-11-29 12:12:48.843 -0800 | NULL | NULL | 0 | NULL | ROLE | NULL | false | false | edaf548eb0c2744a87426529b53aac75756d0ea1c0ba5edb3cbb4295a381f2b4 | false | NULL | NULL |
+--------------+---------+---------------+-------------+-----------+-----------------------+-------------------------------------+-------------------+------------------+---------------------+---------------+---------------+-------------+------------------------------+-------------------------------+-------------------------------+------------+--------------+-------------------+---------+-----------------+-----------------+--------+--------------+------------------------------------------------------------------+--------------+------------------------+----------------------+
다음 예제는 서비스 하나를 나열해요:
SHOW SERVICES LIMIT 1;
다음 예제는 이름에 "echo"가 포함된 서비스를 나열해요:
SHOW SERVICES LIKE '%echo%';
다음 예제는 이름에 "echo"가 포함된 서비스 하나를 나열해요:
SHOW SERVICES LIKE '%echo%' LIMIT 1;
다음 예제는 작업으로 실행되는 서비스만 나열해요:
SHOW JOB SERVICES;