ODBC 동작
ODBC 드라이버를 테스트한 후에는 이 드라이버를 사용하여 다양한 클라이언트 애플리케이션에서 인스턴스 데이터베이스를 쿼리할 수 있습니다.
ODBC 집계 함수
ODBC 드라이버는 데이터를 다운로드하고 집계 함수를 로컬로 적용하려고 시도합니다. ODBC 드라이버는 다음 집계 함수를 지원합니다.
- 카운트
- 합계
- 최소
- 최대
- 평균
Aggregate 웹 서비스 플러그인을 활성화하여 ODBC 드라이버를 통해 집계 쿼리의 성능을 향상시킵니다.
ODBC 날짜 및 시간 값
ODBC 드라이버가 설치된 인스턴스와 컴퓨터는 서로 다른 두 가지 표준 시간대를 사용할 수 있습니다. ODBC 드라이버에서 반환되는 날짜 및 시간 값은 ServiceNow 인스턴스 시간대가 아니라 드라이버를 사용하는 애플리케이션의 로컬 시간대로 표시됩니다.
ODBC 드라이버를 호스팅하는 인스턴스와 컴퓨터 모두에 대해 정확한 시간대에서 쿼리해야 합니다. GlideRecord는 인스턴스 시간대를 기준으로 필터링을 수행하고 ODBC 클라이언트는 Windows 시간대를 기준으로 필터링됩니다.
예를 들어 인스턴스가 CST(중부 표준시)이고 ODBC 드라이버가 PST(태평양 표준시)의 컴퓨터에 설치되어 있다고 가정해 보겠습니다. 인스턴스에서 2014-05-20 10:00:00에 인시던트가 생성되고 인시던트가 생성된 시간은 두 시간대의 사용자에 대해 UI에 10:00:00 으로 표시됩니다. 그러나 생성 날짜 및 시간별로 이 인시던트를 성공적으로 쿼리하려면 PST의 컴퓨터 사용자가 2014-05-20 10:00:00 대신 2014-05-20 08:00:00을 쿼리해야 합니다.
기간 및 타이머 유형 필드는 ODBC 버전 1.0.10부터 UTC 표준 시간대를 사용하여 반환됩니다. 이 변경에 대한 자세한 내용은 KB0583982 를 참조하십시오.
ODBC 표시 값
ODBC 표시 값을 사용하고 작업하는 방법에 대한 몇 가지 예는 다음과 같습니다.
- 선택 및 참조 열의 표시 값:
선택, 참조, 기간 또는 타이머 유형의 열을 쿼리할 때 표시 값을 포함하는 프리픽스
dv_이 있는 추가 열을 사용할 수 있습니다. 예를 들어, sys_user 테이블에 다른 요청을 하지 않고 인시던트 기록에서 참조 필드의 sys_user.name 표시 값을 반환하려면 dv_caller_id 선택할 수 있습니다.그림 1. 표시 값 반환 - 필터 조건의 표시 값:
표시 값은 필터 조건에도 사용할 수 있습니다. ODBC 드라이버는 쿼리 조건을 최적화하고 서버에서 필터를 처리합니다(예: dv_caller_id 필드 이름을 사용하여 인시던트의 caller_id 필드에 대한 sys_user의 표시 값을 쿼리하는 것).
그림 2. 필터 조건에 값 표시 - 집계 쿼리의 값 표시:
집계 쿼리는 group by 또는 where 절에 표시 값을 지정하는 경우(예: 인시던트의 caller_id 필드에서 그룹화 및 필터 지정)를 활용할 수도 있습니다. 쿼리는 서버로 전달하여 최적화됩니다.
그림 3. 집계 쿼리의 값 표시
테이블 및 열 이름 쿼리
쿼리하는 사용자의 읽기 ACL을 기반으로 접근 가능한 테이블 및 열 목록을 가져올 수 있습니다.
- 다음 쿼리는 쿼리하는 사용자가 읽기 권한이 있는 모든 테이블의 이름을 반환합니다.
oa_tables에서 * 선택 - 쿼리할 테이블의 이름을 알고 있으면 사용자가 읽기 권한이 있는 모든 열의 이름을 쿼리할 수 있습니다. 쿼리하는 사용자에게 테이블과 열 모두에 대한 읽기 권한이 있어야 합니다.
select * from oa_columns where table_name='table_name';
ODBC 호출을 읽기 전용 복제본으로 라우팅
쿼리 라우팅은 기본 DB에서 수많은 DB CPU 주기가 소요되는 SELECT 쿼리에 대해 기본 데이터베이스의 부하를 줄이기 위해 수행됩니다. 자세한 내용은 ServiceNow 읽기 전용 복제본 데이터베이스 소개를 참조하십시오.
ODBC 호출을 읽기 전용 복제본으로 라우팅하려면 다음으로 이동하십시오. ODBC를 true로 설정합니다.