ODBC の動作
ODBC ドライバーをテストした後、それを使用して、さまざまなクライアントアプリケーションからインスタンスデータベースをクエリできます。
ODBC 集計関数
ODBC ドライバーは、データをダウンロードし、集計関数をローカルに適用しようとします。ODBC ドライバーは、次の集計関数をサポートしています。
- 総数
- 合計
- 最小
- MAX
- AVG
集計 Web サービス プラグインをアクティブ化して、ODBC ドライバーを使用して集計クエリのパフォーマンスを向上させます。
ODBC の日付と時刻の値
インスタンスと ODBC ドライバーがインストールされているマシンは、2 つの異なるタイムゾーンを使用する場合があります。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_を持つ追加の列を使用できます。たとえば、[ dv_caller_id ] を選択すると、sys_user テーブルに別の要求を行うことなく、インシデントレコードから参照フィールドの sys_user.name 表示値を返すことができます。図 : 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 に設定します。