ERRトレース

ERRコンポーネントのトレースが役立つ場合もあります。たとえば、レベル4のERRトレースでは、TimesTenダイレクト・ドライバにプッシュされるすべてのエラー・メッセージが表示されます(内部的に処理されるため、すべてのエラーがユーザーに出力されるわけではありません)。デフォルトは、レベル1のERRトレースです。レベル2および3のERRトレースでは、出力は作成されません。

表2-5に、ERRトレース・レベルを示します。「+」サインの付いた各レベルには、該当するレベルで説明されているトレース情報に加え、該当レベルより上のすべてのレベルの情報も含まれます。

表2-5 ERRトレース・レベル

レベル 出力

1 (デフォルトの設定)

致命的エラー

4

+ 他のすべてのエラー・メッセージ。ほとんどがTimesTenで内部的に処理されます

この例では、myDSNデータベースに対してERRトレースをレベル4で実行するためにttTraceMonを実行します。

最初に、表を作成します。

Command> CREATE TABLE test (id TT_INTEGER);

次に、レベル4でトレースを有効にします。前述の例とは異なり、この例ではトレースをファイルに出力するのではなく、トレース・バッファからその内容を直接参照します。ERRトレースをバッファに保存する前に、flushコマンドを使用してバッファを空にします。

% ttTraceMon myDSN
Trace monitor; empty line to exit
Trace> level err 4
Trace> flush

3つのエラーがあるSQLスクリプトを実行します。エラーは次のとおりです:

  • 既存の表と同じ名前で表を作成する。

  • 誤った構文を使用して表に値を挿入する。

  • CHARデータをTT_INTEGER列に挿入する。

Command> CREATE TABLE test (id TT_INTEGER);
 2207: Table TEST already exists
The command failed.
Command> INSERT INTO test VALUES 'abcd');
 1001: Syntax error in SQL statement before or at: "'abcd'", character position:
 25
insert into test values 'abcd');
                        ^^^^^^
The command failed.
Command> INSERT INTO test VALUES ('abcd');
 2609: Incompatible types found in expression
The command failed.

トレース情報はトレース・バッファに書き込まれます。dumpコマンドを使用して、これを表示します。

Trace> dump
19:28:40.465  174227 ERR      4L    1C  24263P TT2207: Table TEST already exists
 -- file "eeDDL.c", lineno 2930, procedure "sbEeCrDtblEval()"
19:28:51.399  174228 ERR      4L    1C  24263P TT1001: Syntax error in SQL 
statement before or at: "'abcd'", character position: 25
insert into test values 'abcd');
                        ^^^^^^
 -- file "ptSqlY.y", lineno 6273, procedure "reserved_word_or_syntax_error"
19:29:00.725  174229 ERR      4L    1C  24263P TT2609: Incompatible types found
in expression -- file "saCanon.c", lineno 12618, procedure "sbPtAdjustType()"
3 records dumped

ERRトレースをデフォルトの設定(1)に戻し、ttTraceMonを終了します。

Trace > level err 1
Trace > {press ENTER – blank line}