トランザクションのSQLをデバッグして、それをトリガーしているコードを見つける方法Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } <!-- div.margin{ padding: 10px 40px 40px 30px; } table.tocTable{ border: 1px solid; border-color:#E0E0E0; background-color: rgb(245, 245, 245); padding-top: .6em; padding-bottom: .6em; padding-left: .9em; padding-right: .6em; } table.noteTable{ border:1px solid; border-color:#E0E0E0; background-color: rgb(245, 245, 245); width: 100%; border-spacing:2; } table.internaltable { white-space:nowrap; text-align:left; border-width: 1px; border-collapse: collapse; font-size:14px; width: 85%; } table.internaltable th { border-width: 1px; padding: 5px; border-style: solid; border-color: rgb(245, 245, 245); background-color: rgb(245, 245, 245); } table.internaltable td { border-width: 1px; padding: 5px; border-style: solid; border-color: #E0E0E0; color: #000000; } .title { color: #D1232B; font-weight:normal; font-size:28px; } h1{ color: #D1232B; font-weight:normal; font-size:21px; margin-bottom:-5px } h2{ color: #646464; font-weight:bold; font-size:18px; } h3{ color: #000000; font-weight:BOLD; font-size:16px; text-decoration:underline; } h4{ color: #646464; font-weight:BOLD; font-size:15px; text-decoration:; } h5{ color: #000000; font-weight:BOLD; font-size:13px; text-decoration:; } h6{ color: #000000; font-weight:BOLD; font-size:14px; text-decoration:; } ul{ list-style: disc outside none; margin-left: 0; } li { padding-left: 1em; } --> これは、遅いまたは正しくない結果となる正確な SQL クエリ、および正しくないまたは予期しない SQL を呼び出しているコードのトラブルシューティングに役立ちます。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべてのリリース Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } アプリケーションナビゲーターで、[SQL のデバッグ (詳細)] および [デバッグログ] オプションを選択します。ログはデバッグに不可欠であるため、これは特定のトランザクションの SQL を見つけるのに役立ちます。Chrome 開発者ツールを開き、[ネットワーク] タブに切り替えます。このタブには、アプリケーションによって行われたすべてのネットワーク要求が表示され、問題の原因となっている特定のネットワークトランザクションを特定できます。開発者ツールと SQL のデバッグをアクティブにした状態で問題を再現し、遅いネットワークトランザクションに注意してください。問題を再現することで、ネットワーク要求をリアルタイムで確認し、さらに調査が必要なトランザクションを特定できます。ページまたはリストのロード中にトランザクションが発生している場合は、そのページまたはリストの下に SQL 出力が表示されます。これは、通常、SQL 出力がページまたはリストの読み込みとともに表示され、トランザクションに関連付けられた SQL を簡単に識別できるためです。ページまたはリストの読み込みで発生しない場合は、「/ui_page.do」の新しいページを開く必要があります。これは、最初のページロード時に SQL 出力が表示されず、SQL 出力を表示するために別のページに移動する必要がある場合があるためです。[ネットワーク] タブでトランザクション名を検索して、トランザクションの開始を特定します。これにより、ネットワーク要求のリストを絞り込み、調査している特定のトランザクションに焦点を当てることができます。遅い場合は、SQL出力の時間値を使用して遅いトランザクションを見つけるか、非常に反復的なSQLを探します。繰り返しのSQLが多数見られる場合は、大量のクイッククエリを作成している可能性がありますが、過剰になり、速度が低下します。SQL をトリガーしているコードを特定するには、SQL ステートメントの最後にある小さな + をクリックして、SQL をトリガーしたスタックトラックを展開します。これにより、SQL を実行したコードが表示され、問題の原因を追跡できます。通常は、 GlideRecord.query 行を探し、そこからコードを逆方向 (コールスタックの下側) にたどって、GlideRecord クエリを実行しているスクリプト、ビジネスルール、または Java ファイルを見つけることができます。これは、SQL クエリの実行を引き起こしている特定のコードを特定するのに役立ち、問題をデバッグして修正できます。スタックトレースで呼び出される構成可能なコードは、{table_name}_{sys_id} の形式で表示されます。たとえば、「sys_script_fb678e75d4d1e1d88b1ff162390578f6」を含むスタックトレース行が表示されている場合は、fb678e75d4d1e1d88b1ff162390578f6 を持つsys_scriptテーブルのレコードsys_id実行されていたことを意味します。アプリケーションナビゲーターで「{table_name}」と入力すると、そのテーブルに移動できます。フィルターを実行して、そのテーブルのリスト UI を開きます。次に、sys_idフィールドに一致するフィルターを作成し、その特定のレコードを検索します。または、ブラウザのアドレスバーを使用して、https://myinstance.com/{table_name}_list.do?sys_id={sys_id} の形式で関連するレコードに直接移動することもできます。たとえば、インスタンス名が acme.service-now.com で、前のsys_scriptレコードに移動する場合は、アドレスバーに https://acme.service-now.com/sys_script.do?sys_id=fb678e75d4d1e1d88b1ff162390578f6 を入力します。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } デバッグログに表示されている SQL をトリガーしているトランザクションは、トランザクションが終了したときにも、その特定の SQL 行の実行にかかった時間と、実行中の正確な SQL クエリーを含む同様のメッセージを表示する必要があります。カーソルを合わせることができます...SELECT と FROM の間で、クエリされているフィールドを確認します。 次に、最終的にこの SQL を実行する glideRecord クエリを呼び出しているものを特定するために確認する Java ファイルの例を示します。 ブラウザ開発者ツールのネットワークタブには複数のリクエストが表示され、サーバーの応答を待つ時間が最も長いリクエストを検索します。ServiceNow には、以前のユーザーに対する要求が完了するまで、ユーザーの要求のサーバー処理をブロックするセッション同期と呼ばれる機能があることに注意してください。これは、ネットワークタブで長時間実行されているように見える一部の要求が、より前に開始され、同時に実行されていた長時間実行されている要求被害者である可能性があることを意味します。