• 検索結果がありません。

これにより、次のメッセージが表示されるので、今回は、前回の列情報を維持するために[は い]ボタンをクリックします。

3. 続いて、次のように「列」ページをクリックして、[1 ~ 3 行のプレビュー]で転送元とな るデータを確認します。

1 列目の「列 0」列には、文字データが含まれていることに注目します。

4. 続いて、[詳細設定]ページをクリックして開き、前の Step の手順 8 で設定したように「列 0」列の[DataType]が「4 バイト符号付き整数」(SQL Server の int 型に相当)になって いることを確認します。確認後、[OK]ボタンをクリックして、[フラット フゔ゗ル接続マネ ージャ エデゖタ]ダ゗ゕログを閉じます。

1

1

2

1 2

3

4

データ転送の実行

5. ここまでの設定を確認するために、[デバッグ]メニューから[デバッグ開始]をクリックし て、パッケージを実行します。

今度は、[フラット フゔ゗ル ソース]が赤色に変わって、データ転送が失敗していることを 確認できます。

6. [デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。

7. 続いて、[実行結果]タブをクリックして、実行結果を確認します。

「データ変換が失敗しました。列 "列 0" の~」というエラーが発生して、MISS.txt の「列 0」でのデータ型の変換エラーによって、パッケージ実行が失敗したことを確認できます。こ れは、列 0(1 列目)のデータ型を int 型に設定しているにも関わらず、文字データが含ま れているために発生しています。

1

2

MISS.txt の列0列で データ変換エラー

タスクの失敗 1

2

3

8. 次に、Windows エクスプローラから、C:\logging1.txt フゔ゗ルを開いて、記録されたロ グを確認します。

: (中略)

今 回 は デ ー タ 転 送 が 失 敗 し た の で 、 エ ラ ー の 発 生 (OnError) と タ ス ク の 失 敗

(OnTaskFailed)、が記録されることを確認できます。

このように、ログ記録を設定しておくと、パッケージの実行エラーを記録することができるの で、大変便利です。

9. 最後に、SSISstep5 プロジェクトを保存しておきます。このプロジェクトは、次の Step で も引き続き使用します。

列0でデータ変換エラー

データ フロー タスクが失敗

ST S T EP E P 4 4. . ゗ベ ゗ ベン ント ト ハン ハ ンド ドラ ラ

この STEP では、パッケージの実行゗ベントの内容に応じて、タスクを実行する方法を 説明します。

この STEP では、次のことを学習します。

 ゗ベント ハンドラの設定

 エラー発生時のスクリプト実行

4.1 イベント ハンドラの利用

゗ベント ハンドラを利用するとパッケージ実行時の゗ベント(エラーや警告など)の内容に応じて、タスク を実行できるようになります。この Step では、パッケージのエラー発生時に、スクリプト タスクを実行 するようにしてみましょう。

SSISstep5 プロジェクトを開く

1. まずは、Business Intelligence Development Studio を起動し、次のように[フゔ゗ル]メ ニューの[開く]から[プロジェクト/ソリューション]をクリックして、「C:\SSISstep5」

フォルダの「SSISstep5.sln]フゔ゗ルを選択し、Step3 で作成した「SSISstep5」プロジ ェクトを開きます。

イベント ハンドラの設定

2. ゗ベント ハンドラを設定するには、まずは[イベント ハンドラ]タブをクリックします。

1

2

3

1

3. 今回は、エラー発生時に実行するタスクを設定するために、[゗ベント ハンドラ]で「OnError」

を選択して、[実行可能ファイル 'Package' の 'OnError' イベントハンドラを作成するに はここをクリックします]をクリックします。

4. 次に、エラー発生時に実行するタスクを設定していきます。今回は、[ツール ボックス]から

[スクリプト タスク]をドラッグ ゕンド ドロップして、配置します。

5. 配置した[スクリプト タスク]をダブル クリックします。

1

2

1

6. [スクリプト タスク エデゖタ]ダ゗ゕログが表示されたら、今回は Visual Basic でスクリ プトを記述するために[ScriptLanguage]で「Microsoft Visual Basic 2008」を選択し ます。

7. 続いて、[ReadOnlyVariables]で[...]ボタンをクリックして、[変数の選択]ダ゗ゕログ を 表 示 し 、 シ ス テ ム 変 数 の 一 覧 か ら 「System::ErrorCode」( エ ラ ー 番 号 ) と

「System::ErrorDescription」(エラーの説明)をチェックします。

ダブル クリック 1

1

8. [スクリプト タスク エデゖタ]へ戻ったら、[スクリプトの編集]ボタンをクリックします。

9. [スクリプト エデゖタ]では、[プロジェクト エクスプローラ]で[ScriptMain.vb]を開 き、「public Sub Main( )」内のコードを、次のように入力します(変数名の大文字と小文 字に注意してください)。

MessageBox.Show(Dts.Variables("System::ErrorCode").Value.ToString() _

& ":" & Dts.Variables("ErrorDescription").Value.ToString())

1

2

3

1

このコードにより、エラー番号とエラーの説明をメッセージ ボックスで表示できるようにな ります。

入力後、保存してスクリプト エデゖタを閉じます。

10. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。

1

入力 3

4

2

1

パッケージを実行して確認

11. [デバッグ]メニューから[デバッグの開始]をクリックしてパッケージを実行します。

配置されている[スクリプト タスク]が黄色に変わり、エラー番号とエラーの説明がメッセ ージ ボックスで表示されることを確認できます。

このメッセージ ボックスは、エラー(OnError ゗ベント)が発生した数分表示されるので、

その分[OK]ボタンをクリックします。

12. すべてのメッセージ ボックスが表示され、[スクリプト タスク]が緑色に変わったら、[デバ ッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。

このように、゗ベント ハンドラを利用すると、パッケージのエラー発生時などに応じて、タ 1

Note: エラー発生時にメール送信(メール送信タスク)

OnError ゗ベント ハンドラや OnTaskFailed(タスクの失敗)゗ベント ハンドラでは、メール送信タスクを利用 すると、エラー発生時にメールを送信できるようになるので便利です。

メール送信タスクでは、次のように SMTP サーバーの名前と送信元/先のメール ゕドレス、件名を設定するだけ でメールを送信することができます。

メールの本文として ErrorCode や ErrorDescription を送信するには、次のように[式]ページで

[MessageSource]プロパテゖを設定するようにします。

1

SMTP サーバーの名 前またはゕドレス 2

3

v

2

ErrorCodeDT_STR関数で文字列へキャス トして、ErrorDescriptionと文字列連結 4

1

エラー発生時の エラー メッセージを メールで受信できる

ようになる

ST S TE EP P 5 5. . エラ エ ラー ー コン コ ン ポー ポ ーネ ネ ント ン トの の 利用 利 用

この STEP では、データ転送時にエラーが発生した場合の対処方法について説明しま す。

この STEP では、次のことを学習します。

 エラー発生時の動作

 エラーを無視して実行する方法

 エラー情報をフゔ゗ルへ書き込む方法

 スクリプト コンポーネント(C#)によるエラー メッセージの取得