SYSTEM$PIPE_FORCE_RESUME

SYSTEM$PIPE_FORCE_RESUME

ALTER PIPE를 사용해 일시 중지된 파이프를 강제로 다시 시작해요. 이는 다음 시나리오 중 하나에서 필요해요.

  • 파이프 소유자가 파이프가 일시 중지된 동안 파이프의 소유권을 다른 역할로 이전한 경우.
  • 일시 중지된 파이프가 오래되도록(stale) 방치된 경우. 파이프는 파이프에 대해 수신된 이벤트 메시지의 제한된 보존 기간(기본 14일)보다 오래 일시 중지되면 오래된 것으로 간주돼요. 각 알림이 이 기간의 끝에 도달하면 Snowflake는 내부 메타데이터에서 이를 삭제하도록 예약해요. 파이프가 나중에 다시 시작되면 Snowpipe는 14일보다 오래된 알림을 최선의 노력(best effort)으로 처리할 수 있어요. Snowflake는 이러한 오래된 알림이 처리된다고 보장할 수 없어요. 이 시나리오는 데이터 로드를 트리거하기 위해 클라우드 메시징을 활용하는 파이프 객체(즉 파이프 정의에서 AUTO_INGEST = TRUE)에만 해당돼요.

이 함수를 실행하면 지정된 파이프가 다시 시작돼요. 대기 중인 파일 수를 확인하려면 SYSTEM$PIPE_STATUS를 조회해요. 자세한 내용은 Snowpipe를 참고해요.

출처: Snowflake SQL Reference - SYSTEM$PIPE_FORCE_RESUME

본문

구문

SYSTEM$PIPE_FORCE_RESUME( '<pipe_name>' , '[ STALENESS_CHECK_OVERRIDE ] [ , OWNERSHIP_TRANSFER_CHECK_OVERRIDE ]')

인자

  • 다시 시작할 파이프예요.
  • 오래된 파이프를 다시 시작하도록 지정해요. 파이프는 파이프에 대해 수신된 이벤트 메시지의 제한된 보존 기간(기본 14일)보다 오래 일시 중지되면 오래된 것으로 간주돼요.

    참고: 이 인자는 데이터 로드를 트리거하기 위해 클라우드 메시징을 활용하는 파이프 객체에만 해당돼요.

  • 파이프의 소유권이 다른 역할로 이전된 후 파이프를 다시 시작하도록 지정해요.

    참고: 하위 호환성을 보장하기 위해 pipe_name만 입력으로 전달하는 것은 pipe_name과 OWNERSHIP_TRANSFER_CHECK_OVERRIDE를 모두 전달하는 것과 구문적으로 동등해요.

  • STALENESS_CHECK_OVERRIDE와 OWNERSHIP_TRANSFER_CHECK_OVERRIDE가 모두 필요하면 이 인자는 어떤 순서로든 입력할 수 있어요.

사용상 주의사항

  • 파이프 소유자(즉 파이프에 대한 OWNERSHIP 권한이 있는 역할) 또는 파이프에 대한 OPERATE 권한이 있는 역할만 이 SQL 함수를 호출할 수 있어요. 스키마 객체에 대한 SQL 작업은 객체를 포함하는 데이터베이스와 스키마에 대한 USAGE 또는 다른 권한도 필요해요.
  • pipe_name은 문자열이므로 작은따옴표로 묶어야 해요.
    • 전체 이름은 데이터베이스와 스키마를 포함해(이름이 완전 정규화된 경우) 작은따옴표로 묶어야 해요. 즉 '<db>.<schema>.<pipe_name>'.
    • 파이프 이름이 대소문자를 구분하거나 특수 문자나 공백을 포함하면 대소문자/문자를 처리하기 위해 큰따옴표가 필요해요. 큰따옴표는 작은따옴표 안에 묶여야 해요. 즉 '"<pipe_name>"'.

예시

대소문자 구분 없는 이름의 파이프를 강제로 다시 시작해요.

SELECT SYSTEM$PIPE_FORCE_RESUME('mydb.myschema.mypipe');

대소문자 구분 이름의 파이프를 강제로 다시 시작해요.

SELECT SYSTEM$PIPE_FORCE_RESUME('mydb.myschema."myPipe"');

소유권이 다른 역할로 이전된 후 오래된 파이프를 강제로 다시 시작해요.

SELECT SYSTEM$PIPE_FORCE_RESUME('mydb.myschema.stalepipe','staleness_check_override, ownership_transfer_check_override');

더 알아보기