サンプル: データベースエラーのログ

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce とデータベース > データベースのトレースとエラーのログ >

サンプル: データベースエラーのログ

このサンプルは、 SQLite データベースにデータを挿入するためにデータベーストレースとエラーログの構成方法について説明されています。命令は MapForce によりサポートされる他のデータベース型、および、 ("update"、"ignore"、"delete" などの)他のデータベースアクション型に類似しています。

 

次のパスでこのサンプルで参照されているデモマッピングを見つけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\DatabaseExceptions.mfd。このマッピングは、データベースの2つのテーブルからのデータを同じデータベースのテーブルの新規のペアに挿入し、サンプル: トランザクションロールバック内で更に詳しく説明されています。 データベース内のレコードの一部は例外を生成するために故意的に null に設定されています。

mf_rollback_ex_01

DatabaseExceptions.mfd

このサンプルでは、ビジネスの必要条件は生成されるエラー数とエラーが発生する箇所を決定するために、ターゲットデータベースコンポーネントのためにトレースを有効化することです。 下のステップはこの目的を達成する方法を説明しています。

 

ステップ 1: トランザクションロールバックの有効化

このデモマッピングでは、データベースコンポーネントレベルでのトランザクションロールバックを使用するために構成されています。これは、最初の例外が発生すると、マッピングは実行を停止し、最初の状態まで全てのデータをロールバックします。トランザクションロールバックオプションを変更し、マッピングの実行がレコードの一部のために例外が発生しても継続するようにします:

 

1.new_users テーブルの横の mf_ic_del_a_in ボタンをクリックし、「トランザクションの使用」 チェックボックスを選択し、 「現在のトランザクションをロールバックし継続する」を選択します。

mf_db_trace_05

2.new_addresses テーブルの横の mf_ic_a_in ボタンをクリックし、「トランザクションの使用」 チェックボックスを選択し、「現在のトランザクションをロールバックし継続する」を選択します。 and choose .

 

トランザクションロールバックを完全に無効化することができます。しかしながら、これを行うとエラーが最初に発生するとマッピングの実行は停止され、変更をロールバックすることはできません。ですから奨励されません。この場合トレースとログは、最初に発生した例外の時点の実行のみを反映します。トランザクションロールバックに関する詳細は データベース例外の扱いを参照してください。

 

ステップ 2: エラーログの構成

トレースを有効化するには、以下を行います:

 

1.データベースコンポーネントのタイトルバーを右クリックし、 「プロパティ」 をコンテキストメニューから選択します (または、 データベースコンポーネントのタイトルバーをダブルクリックします)。 これによりデータベースコンポーネント設定ダイアログボックスが開かれます。
2.「エラー」 をトレースレベルとして選択します。
3.「トレースファイル」の横に、トレースファイルの名前を入力します。  (この場合 Errors.xml)。他のマシン、または、オペレーティングシステム上の MapForce Server でマッピングを実行する場合は、絶対パスを入力しないでください。

mf_db_trace_05a

ターゲットデータベースコンポーネントは構造を変更し、トレースファイル構造を使用して追加コンパートメントを表示します:

mf_db_trace_06

データベースコンポーネントレベルでのトレースが有効化されています。今後、トレース設定はこのデータベースコンポーネント上のテーブルアクションにより継承されます。 このサンプルでは、new_usersnew_addresses テーブルの挿入アクションにより継承されます。これらのテーブルのそれぞれのために、アクションボタン mf_ic_a_in  をクリックすると、設定はこの事実を表示します:

mf_db_trace_07

任意で、フィールド ボタンをクリックして、どのフィールドがトレースファイル内に含まれるか、非表示にされるかを構成します。 このサンプルでは、全てのフィールドが含まれています。

 

ステップ 3: マッピングの出力の構成方法

このステップは、他のコンポーネントの種類(この場合、単純型出力コンポーネント) へトレースファイルからの値をマップする方法を示しています。このステップは任意です。エラー ログファイルは他のコンポーネントにトレースファイルをマップしない場合でも作成されます。このサンプルでは、マッピングを明示的に構成して、出力内に発生したエラーの総数を返すように構成します:

 

1.「挿入 | 出力の挿入」 メニューコマンドを選択して、単純型出力コンポーネントを追加します。単純型入力コンポーネントに関する詳細は、マッピングから文字列の値を返す方法を参照してください。
2.「挿入 | 定数」 メニューコマンドを選択して、定数を追加します。 定数は、マッピング出力テキストを明確にするために静的なテキスト 「エラーの総数: 」 を提供します。
3.concat 関数をライブラリからマッピングにドラッグします。ビルトイン関数に関する詳細は、マッピングにビルトイン関数を追加する方法を参照してください。

 

下に示される通り、concat 関数は、定数のテキストとトレースファイルにより与えらえる errors 値を結合します。

mf_db_trace_08

上記の構成の通り、 MapForce Server を使用してマッピングが実行されると、出力はテキストを表示します: value が実行されると、ランタイムに遭遇したエラーの数量を示す "エラーの総数: {value}"。

 

この時点では、「結果」コンポーネント上の プレビュー btn_component_preview_pressed ボタンを押して、 MapForce 内でマッピングを実行することは不可能で、エラーを引き起こします。単純な出力はトレースファイルからデータを読み取るため、トレースファイルが最初に存在することが重要です。 次のステップはトレースファイルの作成方法を示しています。

 

ステップ 4: マッピングの実行

MapForce を使用してマッピングを実行する方法:

 

1.データベースコンポーネント上の 「プレビュー」 btn_component_preview_pressed ボタンをクリックします。
2.「出力」 タブをクリックします。
3.出力メニュー上で、「SQL-スクリプトの実行」をクリックします。 この時点では、 マッピングで最初の例外が発生します。これは期待されるものです。データベーストランザクション例外ダイアログボックスが表示されます。

mf_db_trace_09

4.上記の通りロールバックオプションを選択し、「OK」をクリックします。

 

メモ:MapForce Server によりマッピングが実行されると、ダイアログボックスは表示される、 MapForce 内で構成されたロールバック設定に従い、エラーのトランザクションが自動的にロールバックされます。

 

このサンプルでは、マッピングの実行が完了すると、失敗したすべてのトランザクションがロールバックされ、成功した実行のみがデータベースにコミットされます。 発生したエラーは、 Errors.xml ファイルに書き込まれます。以下にこの実行の一部が表示されています:

mf_db_trace_10

ログファイルが生成されたので、 MapForce 実行内のエラーの総数を返す出力をプレビューすることができます:

 

1.マッピングに戻り、「結果」コンポーネント上の 「プレビュー」 btn_component_preview_pressed ボタンをクリックします。
2.「出力」 タブをクリックして、結果を確認します。

mf_db_trace_11

マッピングのこの部分は、以前に作成されたログファイルからのデータを読み取ります。ログファイルが存在しない場合、エラーが生成されます。


(C) 2019 Altova GmbH