Connector 문제 해결하기

이 항목에서는 ServiceNow용 Snowflake Connector와 관련된 문제를 해결하기 위한 지침을 제공합니다.

이 항목의 내용:

참고

다음 섹션에서는 커넥터 데이터베이스 의 PUBLIC 스키마에 정의된 저장 프로시저에 대해 설명합니다. 이러한 저장 프로시저를 호출하기 전에 해당 데이터베이스를 세션에 사용할 데이터베이스로 선택하십시오.

예를 들어 해당 데이터베이스의 이름이 my_connector_servicenow 인 경우 다음 명령을 실행합니다.

USE DATABASE my_connector_servicenow;
Copy

ServiceNow 인스턴스에 대한 연결 확인하기

ServiceNow용 Snowflake Connector가 ServiceNow 인스턴스에 액세스할 수 있는지 확인하려면, 커넥터 데이터베이스 의 PUBLIC 스키마에 저장된 TEST_SN_CONNECTION 저장 프로시저를 호출합니다.

CALL TEST_SN_CONNECTION('<table_name>');
Copy

여기서

table_name

ServiceNow 인스턴스의 테이블 이름을 지정합니다.

커넥터가 올바르게 설정된 경우 저장 프로시저는 지정된 테이블에서 행을 반환합니다.

예를 들어 커넥터의 데이터베이스 이름이 my_connector_servicenow 이고 ServiceNow 인스턴스에 있는 my_table 이라는 테이블에서 행을 검색하여 연결을 확인하려는 경우 다음 명령을 실행하십시오.

USE DATABASE my_connector_servicenow;
CALL TEST_SN_CONNECTION('my_table');
Copy

ServiceNow 및 Snowflake의 테이블 행 수 비교하기

ServiceNow 및 Snowflake에서 모두 테이블의 현재 행 수를 비교하려면 CHECK_SN_ROW_COUNT 프로시저를 호출하십시오.

CALL CHECK_SN_ROW_COUNT('<table_name>');
Copy

여기서

table_name

ServiceNow 인스턴스의 테이블 이름을 지정합니다.

프로시저가 시간 초과될 경우 프로시저는 stats API를 사용하여 ServiceNow에 있는 테이블의 행 수를 확인할 수 없습니다. 이는 이 테이블의 행 수가 너무 커서 이 API에서 계산할 수 없다는 의미일 수 있습니다.

참고

반환되는 행의 수는 달라질 수 있습니다. ServiceNow 테이블에는 동등한 Snowflake 테이블보다 더 많은 행이 포함될 수 있습니다. 이는 ServiceNow의 지정된 테이블에 대해 설정된 ACL(액세스 제어 목록) 규칙으로 인해 발생할 수 있습니다.

테이블에 대해 데이터 범위 시작 시간 이 구성되면 반환되는 행 수가 다를 수 있습니다. ServiceNow 행 수는 여전히 모든 행 수를 나타내는 반면, 구성에 따라 제한된 수의 행만 Snowflake에 수집되었습니다.

커넥터는 ServiceNow 테이블의 행 수에 대한 정보를 검색하기 위해 다양한 엔드포인트를 사용합니다. 커넥터는 stats 를 사용하여 행 수를 비롯한 테이블에 대한 정보를 확인합니다. 커넥터는 table 을 사용하여 데이터를 Snowflake로 수집합니다.

행 수집 상태 확인하기

ServiceNow 및 Snowflake의 가능한 모든 위치에서 행 수집 상태를 확인하려면 CHECK_RECORD_HISTORY 프로시저를 호출하십시오.

CALL CHECK_RECORD_HISTORY('<table_name>', '<sys_id>');
Copy

여기서

table_name

ServiceNow 인스턴스의 테이블 이름을 지정합니다.

sys_id

확인할 행의 sys_id 를 지정합니다.

이 프로시저는 다음 속성을 포함하는 JSON 오브젝트를 반환합니다.

속성

설명

table_name

테이블의 이름입니다.

sys_id

ServiceNow의 행에 대한 고유 식별자입니다.

status

행 수집 상태입니다.

is_present_in_servicenow

행이 ServiceNow의 테이블에 있는 경우 true, 그렇지 않으면 false 입니다.

is_present_in_servicenow_audit_table

행이 ServiceNow의 감사 테이블에서 추적되는 경우 true, 그렇지 않으면 false 입니다.

is_present_in_snowflake_destination_table

행이 이미 수집되었고 Snowflake의 dest_db 데이터베이스에서 사용 가능한 경우 true, 그렇지 않으면 false 입니다.

event_log_records

sys_id 가 있는 행에 대한 이벤트 로그의 항목 을 나타내는 JSON 오브젝트로 구성된 배열입니다.

각 오브젝트에는 데이터 변경의 타임스탬프와 이벤트 유형을 지정하는 이벤트 로그 테이블의 열에 해당하는 다음 속성이 포함되어 있습니다.

  • sys_updated_on

  • event_date

  • event_type

삭제에 대한 테이블 감사 여부 확인하기

ServiceNow용 Snowflake Connector는 감사에 의존하여 레코드 삭제를 Snowflake에 전파합니다.

ServiceNow의 지정된 테이블이 레코드 삭제를 감사하도록 구성되었는지 확인하려면 CHECK_IF_AUDIT_ENABLED 저장 프로시저를 호출하십시오.

CALL CHECK_IF_AUDIT_ENABLED('<table_name>');
Copy

여기서

table_name

ServiceNow 인스턴스의 테이블 이름을 지정합니다.

이 저장 프로시저는 지정된 테이블에 대한 auditno_audit_delete 구성을 확인하고 감사 활성화 여부에 대한 정보를 출력합니다.

문제 해결 데이터 가져오기

문제 해결 데이터를 가져오려면 GET_TROUBLESHOOTING_DATA 저장 프로시저를 호출합니다.

CALL GET_TROUBLESHOOTING_DATA(<number_of_days>);
Copy

여기서

number_of_days

과거 데이터를 가져올 일수를 지정합니다.

이 저장 프로시저는 다음 데이터를 테이블 형식으로 반환합니다.

  • 구성 정보

  • 커넥터에서 발생한 오류

  • 수집 기록

다음 예제에서는 이 저장 프로시저를 호출하는 방법을 보여줍니다.

USE DATABASE my_connector_servicenow;
  CALL GET_TROUBLESHOOTING_DATA(1);
Copy

반환된 데이터를 CSV 형식으로 저장하여 Snowflake 지원 으로 보낼 수 있습니다.

ServiceNow에 대한 연결 테스트하기

커넥터가 ServiceNow 인스턴스에 액세스할 수 있는지 확인하려면 GET_CONNECTION_STATUS 저장 프로시저를 호출합니다.

이 저장 프로시저는 설정 중에 제공된 시크릿에 저장된 연결 및 자격 증명을 확인합니다. 다음 두 키가 있는 베리언트를 반환합니다.

  • status

  • details

다음 예제에서는 GET_CONNECTION_STATUS 저장 프로시저 실행을 보여주도록 호출하는 방법을 보여줍니다.

USE DATABASE my_connector_servicenow;
CALL GET_CONNECTION_STATUS();
Copy

액세스할 수 없는 오브젝트 복원하기

커넥터에는 커넥터 데이터베이스 외부에 위치하는 여러 데이터베이스 오브젝트가 필요합니다. 이러한 오브젝트를 사용할 수 없으면 커넥터가 실패하거나 올바르게 작동하지 않습니다. 오브젝트를 사용할 수 없게 될 수 있는 상황은 다음과 같습니다.

  • 오브젝트를 삭제하는 경우.

  • 필수 권한을 유지하거나 복원하지 않고 오브젝트를 재생성하는 경우.

  • 커넥터가 이러한 오브젝트를 사용하기 위해 필요한 권한 부여를 취소하는 경우.

대부분의 경우, 이러한 오브젝트를 다시 생성하고 필요한 권한을 부여하여 수동으로 복원할 수 있습니다. 다음 섹션에서는 여러 오브젝트를 복원하는 방법에 대해 설명합니다.

커넥터 웨어하우스 복원하기

커넥터가 웨어하우스에 대한 액세스 권한을 상실한 경우, CONFIGURE_WAREHOUSE 저장 프로시저를 호출하여 새 커넥터를 구성합니다.

커넥터 시크릿 오브젝트 복원하기

커넥터에서 사용하는 시크릿 오브젝트 가 삭제되면 동일한 이름을 사용하여 동일한 데이터베이스 및 스키마에 시크릿을 다시 생성해야 합니다.

시크릿의 정규화된 이름을 확인하려면 다음 명령을 실행합니다.

SELECT value:secret FROM GLOBAL_CONFIG WHERE key = 'connection_config';
Copy

또한, 커넥터가 사용하는 사용자 지정 역할 에 대한 재생성 시크릿에 USAGE 권한도 부여해야 합니다.

시크릿 오브젝트의 데이터베이스 또는 스키마가 삭제된 경우 UNDROP 명령을 실행하여 복원할 수 있습니다. 이 명령을 수행하면 시크릿 오브젝트도 복원됩니다.

UNDROP 명령을 사용할 수 없는 경우 동일한 이름을 사용하여 데이터베이스 및 스키마를 다시 생성해야 합니다. 또한, 커넥터에서 사용하는 사용자 지정 역할 에 대한 데이터베이스 및 스키마에 USAGE 권한도 부여해야 합니다.

API 통합 복원하기

커넥터에서 사용하는 API 통합 이 삭제되면 동일한 이름을 사용하여 다시 생성해야 합니다. 커넥터에 필요한 API 통합의 이름을 확인하려면 다음 명령을 실행합니다.

SELECT value:apiIntegrationName FROM GLOBAL_CONFIG WHERE key = 'connection_config';
Copy

API 통합을 다시 생성할 때 이전에 사용한 동일한 정규화된 시크릿 이름 및 ServiceNow 인스턴스 URL을 사용해야 합니다.

시크릿의 정규화된 이름을 확인하려면 다음 명령을 실행합니다.

SELECT value:secret FROM GLOBAL_CONFIG WHERE key = 'connection_config';
Copy

ServiceNow 인스턴스 URL을 확인하려면 다음 명령을 실행합니다.

SELECT value:serviceNowUrl FROM GLOBAL_CONFIG WHERE key = 'connection_config';
Copy

또한, 커넥터에서 사용하는 사용자 지정 역할 에 대한 재생성 API 통합에 USAGE 권한도 부여해야 합니다.

ServiceNow 데이터에 대한 데이터베이스 및 스키마 복원하기

ServiceNow 데이터에 대한 데이터베이스 또는 스키마 가 삭제된 경우, 복원할 수 있는 유일한 방법은 UNDROP 명령을 실행하는 것입니다. 이 명령을 사용할 수 없는 경우 커넥터를 다시 설치하고 ServiceNow 데이터를 다시 수집해야 합니다.

ServiceNow 데이터가 포함된 뷰 가 삭제된 경우, 생성을 담당하는 백그라운드 작업이 다음 번에 실행될 때 이 뷰가 자동으로 다시 생성되어야 합니다.

ServiceNow 데이터(이벤트 로그 또는 원시 데이터 테이블)가 포함된 테이블 중 하나가 삭제되고 UNDROP TABLE 명령을 사용하여 이를 복구할 수 없는 경우, 다음을 수행하여 ServiceNow 테이블의 수집을 다시 시작하십시오.

커넥터의 사용자 지정 역할 복원하기

커넥터에서 사용하는 사용자 지정 역할 이 삭제된 경우, 동일한 이름을 사용하여 다시 생성해야 합니다. 커넥터에 필요한 역할의 이름을 확인하려면 다음 쿼리를 실행합니다.

SELECT value FROM GLOBAL_CONFIG WHERE key = 'data_owner_role';
Copy

또한, 나열된 권한을 역할에 복원해야 합니다. GLOBAL_CONFIG 뷰를 사용하여 해당 오브젝트의 이름을 결정할 수 있습니다.

또한, 역할은 해당 스키마 의 ServiceNow 데이터가 포함된 모든 테이블 및 뷰에 대한 소유권도 있어야 합니다.

이 스키마에서 추가 테이블 또는 뷰를 수동으로 생성하지 않은 경우 GRANT OWNERSHIP ON ALL TABLES/VIEWS IN SCHEMA ... TO ROLE ... 명령을 실행하여 역할을 복원할 수 있습니다.

예를 들어, ServiceNow 데이터가 dest_db 데이터베이스와 dest_schema 스키마에 저장된 경우, connector_resources_provider 역할을 복원하려면 다음 명령을 실행합니다.

GRANT OWNERSHIP ON ALL TABLES IN SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
GRANT OWNERSHIP ON ALL VIEWS IN SCHEMA dest_db.dest_schema TO ROLE connector_resources_provider;
Copy

재생성된 역할은 커넥터 데이터베이스에도 부여되어야 합니다. 예를 들어 connector_resources_provider 라는 역할을 my_connector_servicenow 데이터베이스에 부여하려면 다음 명령을 실행하십시오.

GRANT ROLE connector_resources_provider TO DATABASE my_connector_servicenow;
Copy

커넥터에 대한 알림 통합 복원하기

알림 통합 오브젝트에 대한 커넥터의 액세스 권한이 상실된 경우, 경고 구성 절차를 다시 수행하고 필요한 경우 알림 통합 오브젝트를 다시 생성하십시오.

이메일 알림이 Snowsight 를 통해 구성된 경우 알림을 비활성화한 후 다시 활성화하여 필요한 외부 오브젝트를 복원할 수 있습니다.