Skip to main content

CANCEL QUERY (SQL)

現在システム上で実行されているクエリをキャンセルします。

構文

CANCEL QUERY pid [ IDENTIFIED BY sql-id ]
  [ TIMEOUT timeout ]

説明

クエリが消費するシステム・リソースが多すぎる場合、その実行をキャンセルすることができます。CANCEL QUERY コマンドは、クエリの実行をキャンセルします。クエリは、そのクエリが実行されているプロセスの ID、およびオプションでそのクエリの SQL Statement ID を指定することによりキャンセルされます。キャンセルされたクエリは引き続き準備が整った状態であるため、初めて実行中のクエリをキャンセルしても、クエリ・キャッシュは生成されます。

文インデックスに格納されている SQL Statement ID は、最初にその文が実行されたときに割り当てられ、変更されることはありません。この ID は、INFORMATION_SCHEMA.STATEMENTS にクエリを実行するか、自分のインスタンスで現在実行中の文であれば、INFORMATION_SCHEMA.CURRENT_STATEMENTS にクエリを実行することによっても確認できます。

クエリは、$SYSTEM.SQL.CancelQuery()Opens in a new tab メソッドを使用してキャンセルすることもできます。

指定されたプロセス ID がクエリを実行していない場合、CANCEL QUERY コマンドは SQLCODE -400 で失敗します。

特権

CANCEL QUERY または、別のユーザが発行した $SYSTEM.SQL.CancelQuery() を使用してクエリをキャンセルするユーザには、%CANCEL_QUERY 特権が必要です。

引数

pid

SQL クエリが実行されているプロセスを特定するプロセス ID。$JOB を使用して、プロセス ID を特定します。

sql-id 引数が指定されない場合、システムは、そのプロセス内で実行される最初のクエリをキャンセルします。特定のクエリをキャンセルするには、sql-id 引数を指定する必要があります。

sql-id

SQL 文インデックス内に格納される SQL クエリの ID を指定する引数 (オプション)。この引数が省略された場合、システムは、指定されたプロセス内で実行される最初のクエリをキャンセルします。特定のクエリをキャンセルするには、sql-id 引数を指定する必要があります。

timeout

指定したクエリをキャンセルする前に待機する秒数を指定する引数 (オプション)。省略した場合、クエリは既定で直ちにキャンセルされます。

以下の例は、プロセス 8044 で実行中のクエリをキャンセルします。

CANCEL QUERY 8044

以下の例は、SQL Statement ID が 68 の、プロセス 12889 で実行中のクエリをキャンセルします。

CANCEL QUERY 12889 IDENTIFIED BY 68

以下の例は、SQL Statement ID が 104 の、プロセス 10455 で実行中のクエリを、30 秒待機した後にキャンセルします。

CANCEL QUERY 10455 IDENTIFIED BY 104 TIMEOUT 30

関連項目

FeedbackOpens in a new tab