EXITONDELAY - Basic Teradata Query

Basic Teradata® Queryリファレンス

Product
Basic Teradata Query
Release Number
17.10
Published
2022年2月
Language
日本語
Last Update
2022-02-11
dita:mapPath
ja-JP/nnw1608578382132.ditamap
dita:ditavalPath
ja-JP/obe1474387269547.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

目的

この制御によって、ユーザーは、CLIがリクエストをタイムアウトする前に、実行依頼されたSQLリクエストが処理されるまでの最大期間を指定できます。タイムアウトが発生すると、BTEQプロセスは終了します。データベースがダウンするか期間を超えるとタイムアウトがトリガーされます。

次のような使用例があります。
  • ダウンしたデータベース上で無期限に待機しているLOGONコマンドの最大期間を指定するのが望ましい場合
  • 実行に長い時間を要する結果になる可能性のあるSQLリクエストの最大期間を指定するのが望ましい場合
  • ダウン状態のデータベースにリクエストが実行依頼されたとき、データベースが復旧するのを待つのではなく、リクエストの再処理を試みて、BTEQを終了したい場合

このコマンドはワークステーション プラットフォームでのみ利用可能です。

構文



次のような場合に当てはまります。

OFF
BTEQは、LOGONコマンドまたは長時間実行されるSQLリクエストをタイムアウトせず、データベースがダウン状態になった場合、無期限に待ち続けます。
ON
  • BTEQは、割り当てられた時間を超過したとき、ログオンにタイムアウト ファクタを使用して0以外の戻りコードで終了します。
  • BTEQは、データベースから応答が返される前に割り当てられた時間を超過したとき、長期間実行されるSQLリクエストにタイムアウト ファクタを使用して0以外の戻りコードで終了します。
  • BTEQは、実行依頼されたSQLリクエストでDBSクラッシュが発生した場合にタイムアウト ファクタを使用して、直ちにまたは割り当てられた時間を超過したとき(CLIのAutomatic Redrive設定で決まる)、0以外の戻りコードで終了します。

CLIのAutomatic Redrive設定が有効になっている場合、BTEQは割り当てられた時間を超過するまで待機してから終了します。これにより、EXITONDELAYタイムアウト期間を超過する前にデータベースが復旧した場合にリクエストを完了できるようになります。

Automatic RedriveとRecoverable Network Protocolが無効になっている場合、CLIは接続を再試行できないため、BTEQはデータベース クラッシュ(ハードまたは一時的)またはネットワークの機能停止が発生するとすぐに終了します。

Automatic Redrive設定の構成については、CLIのマニュアルを参照してください。

MAXREQTIME t
EXITONDELAY ONが使用されると、オプションのキーワードMAXREQTIME(最大リクエスト時間)は、BTEQがログオンが有効になるのを待機するまたは長時間実行されるSQLリクエストが実行可能状態になるのを待機する秒数を受け入れます。

MAXREQTIMEの範囲は、10から65535になります。

MAXREQTIMEが使用されないと、デフォルトの待機時間は10秒になります。

RC

EXITONDELAY ONを使用すると、オプションのキーワードRC(戻りコード)には、正数、ERRORCODE、またはERRORLEVELを使用できます。

RCが使用されない場合、デフォルトで使用される戻りコードは致命的エラーの16になります。

RCが使用されている場合、次を指定します。
  • nによって、BTEQは指定されたコードを返す。

    nの値は、0~2147483647です。

  • ERRORLEVELによって、BTEQは、発生した最も高い重大度を返す。
  • ERRORCODEによって、BTEQは、最後のSQL文により生成されたエラー コードを返す。

使用上の注意

EXITONDELAYの設定をログオン前または後に変更できます。すなわち、コマンドはSQL固有に使用できます。

EXITONDELAYコマンドはSQL ECHO文を使って実行できません。これは、リクエストの1つのステートメントだけでなくリクエスト全体に影響を与える必要があるためです。

SET DEFAULTSコマンドは、EXITONDELAY設定に影響しません。

EXITONDELAYコマンドは、長期間実行されるSQLリクエストをタイムアウトするだけでなく、ダウンしたデータベースのLOGONコマンドまたはSQLリクエストをタイムアウトします。このため、ユーザーは実際クラッシュなしで終了したい場合、長時間実行されるSQLリクエストの時間を見積もる必要があります。しかし、それでもクラッシュやネットワークの問題が発生した場合はタイムアウトします。

例 - EXITONDELAY

5分後にLOGONコマンドをタイムアウトするには、LOGONの前にこのコマンドを実行します:

.SET EXITONDELAY ON MAXREQTIME 300

BTEQはLOGONコマンドをタイムアウトし、データベースが5分を超えてダウンしたままの場合終了します。

データベースが稼動している場合、上記の設定により、応答するのに5分を超えるSQLもタイムアウトされます。

SQLリクエストの処理中にデータベースがダウンした場合、BTEQは割り当てられたタイムアウト時間を超過したときに終了するか(CLIのAutomatic Redriveが有効になっている場合)、すぐに終了します(CLIのAutomatic Redriveが無効になっている場合)。