ODBC ドライバーのベスト プラクティス<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 以下は、ODBC ドライバーを使用する際に考慮すべきいくつかのベスト プラクティスです。現在ODBC Driverを使用している、または使用を計画している人は、これらのベストプラクティスを確認し、それに応じてソリューションを設計/変更することをお勧めします。 ODBC は ServiceNow にシームレスに接続し、要求されたデータをフェッチします。これは主に、必要なテーブルデータのバックアップを目的としています。 顧客は、このデータに基づいてレポート/分析を実行できます。より小さなデータチャンクを要求するレポートツールのデータソースとして ODBC ドライバーを使用しても問題ありません。ただし、大量のデータを要求する可能性のある外部レポートツールのデータソースとしてODBCドライバーを直接使用することはお勧めできません。顧客が一度に大きなデータ (10K レコードを超える可能性があります) をクエリする必要がある場合、または同じデータを何度も繰り返し要求する必要がある場合は、データをローカルデータベースにバックアップし、その上でレポートを実行することをお勧めします。これにはいくつかの利点があります。1. ローカルデータベースでレポートを実行する方が、Servicenow クラウドから常にデータをフェッチするよりも確実に高速です2. 同じデータを繰り返し要求すると、ServiceNow データベースに負荷がかかり、インスタンスにパフォーマンスが影響することがあります。お客様は、ODBC ドライバー上で BI レポートを実行する傾向があるかもしれません。これはまったく問題ありません。ただし、顧客が一度に実行する並列クエリが多すぎる場合、またはデータの更新が非常に速い場合 (そのため、時間のギャップが非常に少ない/まったくないクエリを実行するため)、ツールから直接 ODBC ドライバーを使用することをお勧めします。顧客は、クエリを順次実行することを検討し、エラー/タイムアウトを回避するためにデータの妥当な更新レートを確保するようにすることができます。受け入れられない場合は、最新のデータをフェッチし、BIツールが実行されるローカルデータベースに書き込むジョブをスケジュールすることを検討することができます。 ODBC は、主に顧客データを提供することを目的としています。場合によっては、お客様はこのツールを直接使用して、バックアップを取る目的で、すべての膨大なデータを一度に照会する傾向があります。しかし、これは提案されていません。ODBC を使用して大量のデータをクエリすると、タイムアウトが発生する可能性があります。データをチャンク単位でクエリすることをお勧めします。このために、顧客はsys_created_onまたはsys_updated_onフィールドを使用して、1 週間または 1 か月のデータを 1 回クエリできます。 表示値の結合/条件はできるだけ避けることを心からお勧めします。古いバージョンの ODBC から新しいバージョンへのアップグレード中に、クエリに関する問題が発生する可能性があります。 クエリ条件で UPPER() と LOWER() を使用しないようにしてください。selectで使用してもまったく問題ありません。パフォーマンスの問題が発生します。 テーブル結合は ODBC でサポートされています。2 つのテーブルを結合して結果をフェッチできます。しかし、ODBCを使用して行うのは非常に非効率的です。代わりに、すべての条件を含むビューを ServiceNow で作成し、そのビューを使用してデータをフェッチすることをお勧めします。また、結合は非効率的であり、結果のセットが小さいとタイムアウトが発生する可能性があります。結合でより多くの結果(10kから15kを超える場所)をフェッチしようとしている場合は、使用状況を再検討し、クラウドデータのバックアップにローカルデータベースを使用してから、ローカルデータベース上でクエリを実行することをお勧めします。 一部のレポートのデータソースとして ODBC ドライバーを使用すると、レポート ツールが膨大な数の条件を含む非常に大きなクエリを発行することがあります。デフォルトでサポートされているクエリの長さは 32768 文字です。構成を変更して、この制限を増やすことができます。また、クエリでサポートされる条件のデフォルトの最大数は 1000 です。構成を変更して、この制限を増やすことができます。1 つのクエリに多数の条件があると、パフォーマンスの問題やタイムアウトが発生する可能性があるため、この制限を増やすことはお勧めできません。このような場合は、クエリを小さなクエリに分割できるかどうかを確認することをお勧めします。クエリを中断したり、ユースケースを再考したりすることが不可能な場合は、必要なデータをすべてローカルデータベースにプルし、その上でレポートを実行することをお勧めします。 sys_id NOT IN("SYS_ID_1", "SYS_ID_2","SYS_ID_3",....) のようなクエリは避けてください。NOT IN を含むエントリが大量にあるクエリは、パフォーマンスが非常に遅いことが知られています。NOT IN のエントリ数が多いこの種のクエリを過度に使用すると、パフォーマンスの問題やタイムアウトが発生する可能性があります。また、条件の数に制限があるため、1000 を超える sys id を使用することはできません。これらの種類のクエリでは、クエリの長さ制限と条件制限の両方が使い果たされます。このような場合は、クエリを小さなクエリに分割できるかどうかを確認することをお勧めします。クエリを中断したり、ユースケースを再考したりすることが不可能な場合は、必要なデータをすべてローカルデータベースにプルし、その上でレポートを実行することをお勧めします。 ODBC ドライバーは並列処理をサポートしています。MS SQL Server Management Studioなどのツールを使用し、ODBCドライバーを使用してジョブを並行して実行できます。並列実行ジョブの最大数は常に 6 に制限することをお勧めします。より多くのジョブを実行すると、ODBC ドライバーでボトルネックが発生し、パフォーマンスの問題が発生する可能性があります。また、ジョブができるだけ重複しないようにすることをお勧めします。 顧客がジョブを並列実行していて、各ジョブが異なるデータ ソースに接続する場合、顧客は 1.0.14_01 以降のバージョンのドライバーの使用を開始する必要があります。古いバージョンのドライバーを使用すると、データが破損する可能性があります。