ODBC の動作

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:3分
  • 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';

    注:
    oa_tablesテーブルとoa_columnsテーブルは、内部ODBCテーブルです。これらのテーブルには、ODBC ドライバーからのみアクセスできます。

    ODBC 呼び出しの読み取りレプリカへのルーティング

    クエリルーティングは、プライマリ DB で多数の DB CPU サイクルを必要とする SELECT クエリのプライマリデータベースの負荷を軽減するために行われます。詳細については、「 ServiceNow 読み込みレプリカデータベースの概要」を参照してください。

    ODBC 呼び出しを読み取りレプリカにルーティングするには、次に移動します すべて > セカンダリデータベース > セカンダリ DB カテゴリ ODBC を true に設定します。