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

SQL Server 2008 自習書シリーズ No.8 Integration Services 応用 Published: 2008 年 6 月 20 日 改訂版 : 2008 年 11 月 17 日 有限会社エスキューエル クオリテゖ

N/A
N/A
Protected

Academic year: 2021

シェア "SQL Server 2008 自習書シリーズ No.8 Integration Services 応用 Published: 2008 年 6 月 20 日 改訂版 : 2008 年 11 月 17 日 有限会社エスキューエル クオリテゖ"

Copied!
127
0
0

読み込み中.... (全文を見る)

全文

(1)

SQL Server 2008 自習書シリーズ No.8

Integration Services 応用

Published: 2008 年 6 月 20 日 改訂版: 2008 年 11 月 17 日 有限会社エスキューエル・クオリテゖ

(2)

この文章に含まれる情報は、公表の日付の時点での Microsoft Corporation の考え方を表しています。市場の変化に応える必要があるた め、Microsoft は記載されている内容を約束しているわけではありません。この文書の内容は印刷後も正しいとは保障できません。この文章 は情報の提供のみを目的としています。

Microsoft、SQL Server、Visual Studio、Windows、Windows XP、Windows Server、Windows Vista は Microsoft Corporation の米国

およびその他の国における登録商標です。

その他、記載されている会社名および製品名は、各社の商標または登録商標です。

(3)

目次

S STTEEPP11. . 本本自自習習書書のの概概要要とと 自自習習書書をを試試すす環環境境ににつついいてて ... 4 1.1 本自習書の内容について ... 5 1.2 自習書を試す環境について ... 6 1.3 事前作業:サンプル スクリプトのセットゕップ ... 7 S STTEEPP22. . ススククリリププトト タタススククとと変変数数のの利利用用 ... 9 2.1 スクリプト タスクの実行 ...10 2.2 スクリプト タスクからフゔ゗ルへの書き込み ...18 2.3 ユーザー定義の変数の利用 ...21 2.4 SQL 実行タスクの結果を変数へ格納 ...30 2.5 SQL ステートメントのパラメータ化と変数の引き渡し ...38 S STTEEPP33. . ロロググ記記録 ...46 録 3.1 実習を始める前に ...47 3.2 ログ記録の設定 ...48 3.3 ログ記録の詳細設定 ...59 3.4 エラー発生時のログ記録の確認 ...62 S STTEEPP44. . ゗゗ベベンントト ハハンンドドララ ...66 4.1 ゗ベント ハンドラの利用 ...67 S STTEEPP55. . エエララーー ココンンポポーーネネンントトのの利利用用 ...74 5.1 作成するパッケージの概要 ...75 5.2 SSISstep5 プロジェクトでエラーが発生することの確認 ...76 5.3 エラーを無視する ...79 5.4 エラー情報をフゔ゗ルへ書き込む ...82 5.5 スクリプト コンポーネント(C#)によるエラー メッセージの取得 ...87 S STTEEPP66. . FFoorreeaacchh ルルーーププととブブレレーークク ポポ゗゗ンント ...96 ト 6.1 Foreach Loop コンテナによる複数フゔ゗ルの読み取り ...97 6.2 ブレークポ゗ントを利用したステップ実行 ... 106 S STTEEPP77. . パパッッケケーージジのの配配置 ... 111 置 7.1 パッケージ構成フゔ゗ルの利用 ... 112 7.2 おわりに ... 125

(4)

S

S

T

T

E

E

P

P

1

1

.

.

この STEP では、自習書の概要について説明します。 この STEP では、次のことを学習します。  自習書の内容について  自習書を試す環境について

(5)

1.1 本自習書の内容について

本自習書の内容について

本自習書では、SQL Server 2008 Integration Services(SSIS)の応用的な利用方法を説明しま す。Integration Services の基本的な操作方法については、本自習書シリーズの「Integration Services 入門」編で説明しています。 Integration Services 入門編で説明した内容は、次のとおりです。  インポート エクスポート ウィザードによる単純なデータ転送(テキスト フゔ゗ル / Access データベース / Excel フゔ゗ルからの゗ンポート方法など)  SSIS デザイナの基本操作(データ フロー タスクによるデータ転送、派生列コンポーネ ントによるデータ変換、参照コンポーネントによる別テーブルのデータ取得など)  データ ビューアによる転送中データの表示方法  SSIS パッケージ(.dtsx)の実行方法(dtexecUI、dtexec)

 SSIS パッケージの定期的な実行方法(SQL Server Agent ジョブとしての登録) 本自習書では、次の内容を説明します。  スクリプト タスクと変数の利用方法  SQL 実行タスクの結果を変数へ格納  データ フロー タスク内の SQL ステートメントのパラメータ化  ログ記録機能  イベント ハンドラ  データ転送時にエラーが発生した場合の動作(エラーの無視、エラー情報のフゔ゗ルへの 書き込みなど)  スクリプト コンポーネントによるエラー メッセージの取得  Foreach Loop コンテナによる複数ファイルの読み取り  ブレークポイントを利用したステップ実行  パッケージの別マシンへの配置方法(パッケージ構成フゔ゗ル、マニフェスト フゔ゗ル、 パッケージ ゗ンストール ウゖザードなど)

(6)

1.2 自習書を試す環境について

必要な環境

この自習書の手順を試すために必要な環境は次のとおりです。  OS Windows Server 2003 SP2 以降 または Windows XP Professional SP2 以降 または Windows Vista または Windows Server 2008  ソフトウェア

SQL Server 2008 Enterprise / Developer / Standard Edition

※ この自習書の手順をすべて試すには、次のコンポーネントを゗ンストールしておく必要が あります(゗ンストール方法については、本自習書シリーズの「Integration Services 入 門」の Step1 を参考にしてください)。

・データベース エンジン サービス ・Integration Services

・Business Intelligence Development Studio ・管理ツール

この自習書内での画面やテキストは、OS に Windows Server 2003 SP2、ソフトウェゕに SQL Server 2008 Enterprise Edition を利用して記述しています。

サンプル スクリプト

この自習書を試すには、サンプル スクリプトをダウンロードして、セットゕップしておく必要が あります。サンプル スクリプトは、次のページで説明します。

(7)

1.3 事前作業:サンプル スクリプトのセットアップ

Step 2.4 で使用するテーブルの作成

この Step 2.4 を試すには、Management Studio のクエリ エデゖタからサンプル スクリプト 内にある「CreateTables.txt」を実行して、「sampleDB」データベースと「社員」テーブルを 作成しておく必要があります(実行手順は、次のとおりです)。

1. Management Studio を起動するには、[スタート]メニューの[すべてのプログラム]か

ら、[Microsoft SQL Server 2008]を選択して[SQL Server Management Studio]をク リックします。 2. 起動後、[サーバーへの接続]ダ゗ゕログで、[サーバー名]へ SQL Server の名前を入力し、 [接続]ボタンをクリックします。 3. 接続完了後、Management Studio が開いたら、次のようにツールバーの[新しいクエリ] をクリックして、クエリ エデゖタを開きます。 1 2 「新しいクエリ」をクリックします 1 クエリ エディタ が表示される

(8)

4. 次に、Windows エクスプローラを起動して、サンプル スクリプトをダウンロードしたフォ ルダを展開し、このフォルダ内の「CreateTables.txt」フゔ゗ルをダブル クリックして開き ます。フゔ゗ルの内容をすべてコピーして、クエリ エデゖタへ貼り付けます。 貼り付け後、ツールバーの[!実行]ボタンをクリックしてクエリを実行します。これにより、 「sampleDB」という名前のデータベースが作成され、その中へ「社員」テーブルが作成さ れます。実行後、「社員」テーブルの 6 件のデータが表示されれば、実行が完了です。 2 サンプル スクリプト内の「CreateTables.txt」 フゔ゗ルの内容をコピー して貼り付け 1 結果を確認 3

(9)

S

S

T

T

E

E

P

P

2

2

.

.

この STEP では、スクリプト タスクや変数の使い方などについて説明します。これら は、本格的な Integration Services パッケージを作成する上で欠かせない機能になりま す。 この STEP では、次のことを学習します。  スクリプト タスクとは  スクリプト タスクによるシステム変数の表示  スクリプト タスクによるフゔ゗ル書き込み  ユーザー定義の変数の利用  SQL 実行タスク結果の変数への格納  SQL ステートメントのパラメータ化と変数の代入

(10)

2.1 スクリプト タスクの実行

スクリプト タスクを利用すると、Visual C# 2008 や Visual Basic 2008 で記述したスクリプトを実行で きるようになります。ここでは、まず Visual Basic 2008 で簡単なスクリプトを記述し、実行できること を確認してみましょう。

新しいプロジェクトの作成

1. まずは、Business Intelligence Development Studio を起動して、[フゔ゗ル]メニューか

ら[新規作成]→[プロジェクト]をクリックし、新しいプロジェクトを作成します。 2. [新しいプロジェクト]ダ゗ゕログでは、[プロジェクトの種類]で「ビジネス インテリジェ ンス プロジェクト」を、[テンプレート]で「Integration Services プロジェクト」を選 択し、[プロジェクト名]を「SSISstep2」、[場所]を「C:\」へ変更して、[OK]ボタンを クリックします。 「フゔ゗ル」メニューの「新規作成」 から「プロジェクト」をクリック 1 1 2 3 4

(11)

これにより、Integration Services プロジェクトが作成されます。

スクリプト タスクの追加

3. 次に、[ツールボックス]の[スクリプト タスク]を SSIS デザ゗ナ上へドラッグ ゕンド ド ロップします。 4. 配置した[スクリプト タスク]をダブル クリックして、[スクリプト タスク エデゖタ]ダ ゗ゕログを表示します。

5. 今回は、Visual Basic 2008 でスクリプトを記述できるように、[ScriptLanguage]で

「Microsoft Visual Basic 2008」を選択して、[スクリプトの編集]ボタンをクリックしま す。 1 SSIS デザ゗ナ上へ ドラッグ & ドロップ ダブル クリック 1

(12)

6. これにより、「スクリプト エディタ」が起動されるので、次のように[プロジェクト エクス プローラ]で[ScriptMain.vb]を開き、「public Sub Main( )」内へ、次のコードを記述

します。 MessageBox.Show("hello") このコードにより、「hello」という文字をメッセージ ボックスで表示できるようになります。 コードを記述したら、保存してスクリプト エデゖタを閉じます。 7. [スクリプト タスク エディタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま 1 2 1 3 4 入力 2

(13)

す。

スクリプト タスクの実行

8. 次に、スクリプトを実行するために、[デバッグ]メニューから[デバッグ開始]をクリックし て、パッケージを実行します。 配置されている[スクリプト タスク]が黄色に変わって、「hello」というメッセージ ボック スが表示されます。 [OK]ボタンをクリックすると、[スクリプト タスク]が緑色に変わって、スクリプトの実 1 1 1 2

(14)

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

システム変数の利用

次に、スクリプト内で Integration Services のシステム変数を利用してみましょう。 1. 配置した[スクリプト タスク]をダブル クリックして、[スクリプト タスク エデゖタ]ダ ゗ゕログを表示します。 2. [スクリプト タスク エデゖタ]ダ゗ゕログでは、[ReadOnlyVariables]の[...]ボタン をクリックします。 1 ダブル クリック 1 1

(15)

3. これにより、[変数の選択]ダ゗ゕログが表示されて、「System::」で始まるシステム変数が 一覧されます。ここでは、この中から「System::UserName」をチェックして、[OK]ボタ ンをクリックします。 このシステム変数では、パッケージを実行しているユーザーの名前を取得することができます。 4. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[スクリプトの編集]ボタンをクリ ックします。 5. [ ス ク リ プ ト エ デ ゖ タ ] で は 、 次 の よ う に [ プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ ] で [ScriptMain.vb]を開きます。 1 2 1

(16)

「public Sub Main( )」内のコードを、次のように変更します。

MessageBox.Show(Dts.Variables("System::UserName").Value)

スクリプト タスク内では「Dts.Variables(”変数名”)」と指定して、変数を利用することが できます。変数名「System::UserName」は、大文字と小文字を区別するので、注意して ください。このコードにより、メッセージ ボックスでユーザー名を表示できるようになりま す。 入力後、保存してスクリプト エデゖタを閉じます。 6. [スクリプト タスク エディタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。 1 3 4 変更 2 1

(17)

7. 次に、スクリプトを実行するために、[デバッグ]メニューから[デバッグ開始]をクリックし て、パッケージを実行します。 配置されている[スクリプト タスク]が黄色に変わって、実行しているユーザー名(ここで は SERVER1\Adminitrator)がメッセージ ボックスで表示されます。 [OK]ボタンをクリックすると、[スクリプト タスク]が緑色に変わって、スクリプトの実 行が成功したことを確認できます。 8. 確認後、[デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了しま す。 このように、スクリプト タスクを利用すると、変数を扱うことができます。また、ユーザー 定義の変数を利用することもできますが、これについては Step2.3 で説明します。 1 1 2 1

(18)

2.2 スクリプト タスクからファイルへの書き込み

スクリプト タスクからファイルへの書き込み

次に、フゔ゗ルへの書き込みを行うスクリプトを作成してみましょう。 1. まずは、配置した[スクリプト タスク]をダブル クリックして、[スクリプト タスク エデ ゖタ]ダ゗ゕログを表示し、[スクリプトの編集]ボタンをクリックします。 2. [スクリプト エデゖタ]が表示されたら、次のように[プロジェクト エクスプローラ]で

[ScriptMain.vb]を開き、「public Sub Main( )」内のコードを、次のように変更します。

Dim sw As New System.IO.StreamWriter("C:\test.txt", False) sw.Write("XXXXX") sw.Close() ダブル クリック 1 2 1 3 4 変更 2

(19)

このコードにより、「C:\text.txt」というフゔ゗ルを作成して、「XXXXX」という文字を書き 込むことができます。 入力後、保存してスクリプト エデゖタを閉じます。 3. [スクリプト タスク エディタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。 4. 次に、スクリプトを実行するために、[デバッグ]メニューから[デバッグ開始]をクリック して、パッケージを実行します。 配置されている[スクリプト タスク]が緑色に変わって、スクリプトの実行が成功したこと を確認できます。 5. 確認後、[デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了しま す。 1 1 1

(20)

6. Windows エクスプローラを起動して、C:\text.txt フゔ゗ルをダブルクリックして開きます。

「XXXXX」という文字が書き込まれていることを確認できます。

このように、スクリプト タスクでは、任意の NET コードを Visual Basic 2008 または Visual c# 2008 を利用して記述することができます。

(21)

2.3 ユーザー定義の変数の利用

ユーザー定義の変数の利用

次に、ユーザー定義の変数を利用してみましょう。 1. まずは、変数を定義します。次のように、[SSIS]メニューから[変数]をクリックして、[変 数]ウゖンドウを表示します。 2. 続いて、「制御フロー」デザ゗ン内の任意の場所をクリックしてから、ツールバーの[変数の 追加]ボタンをクリックします。 Note: 変数のスコープ(有効範囲) [変数の追加]ボタンをクリックする前に、制御フロー デザ゗ン内の任意の場所をクリックしておくことに注意 してください。これにより、変数のスコープ(有効範囲)を「Package」にして、パッケージ内で有効な変数にす ることができます。 3. これにより、変数が追加できるようになるので、今回は、次のように[名前]を「var1」、[デ ータ型]を「String」(文字列)へ指定した変数を追加します。 1 2 [変数]ウゖンドウが 表示される 1 任意の場所をクリック 2 1

(22)

4. 続いて、配置した[スクリプト タスク]をダブル クリックします。 5. [スクリプト タスク エデゖタ]ダ゗ゕログが表示されたら、[ReadWriteVariables]の[...] ボタンをクリックします(スクリプト内で変数へ値を代入するには、ReadOnly ではなく、 ReadWrite へ変数を指定する必要があります)。 6. これにより、[変数の選択]ダ゗ゕログで、変数の一覧が表示されるので、「User::var1」を チェックし、[OK]ボタンをクリックします(ユーザー定義の変数は、「User::」が付きます)。 ダブル クリック 1 1 1 2

(23)

7. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[スクリプトの編集]ボタンをクリ

ックします。

8. [スクリプト エデゖタ]が表示されたら、次のように[プロジェクト エクスプローラ]で

[ScriptMain.vb]を開き、「public Sub Main( )」内のコードを、次のように変更します。 変数名「User::var1」は、大文字と小文字を区別するので、注意してください。

Dts.Variables("User::var1").Value = System.DateTime.Now.ToString()

このコードにより、スクリプト実行時の時刻(Now プロパテゖ)を変数「var1」へ格納で きるようになります。 1 1 3 4 変更 2

(24)

入力後、保存してスクリプト エデゖタを閉じます。 9. [スクリプト タスク エディタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。 10. 次に、ツールボックスを開いて、[スクリプト タスク]をもうひとつ、SSIS デザ゗ナ上へド ラッグ ゕンド ドロップして配置します。 最初の[スクリプト タスク]の緑の矢印を、新たに追加した[スクリプト タスク 1]まで、 ドラッグ ゕンド ドロップして伸ばします。 10. 追加した[スクリプト タスク 1]をダブル クリックして、[スクリプト タスク エデゖタ] ダ゗ゕログを表示します。 1 1 2

(25)

11. [スクリプト タスク エデゖタ]ダ゗ゕログが表示されたら、[ScritLanguage]で

「Microsoft Visual Basic 2008」を選択します。

12. 次に、[ReadOnlyVariables]の[...]ボタンをクリックします。 13. [変数の選択]ダ゗ゕログが表示されたら、変数の一覧から、「User::var1」をチェックして、 [OK]ボタンをクリックします。 ダブル クリック 1 1 1

(26)

14. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[スクリプトの編集]ボタンをクリ

ックします。

15. [スクリプト エデゖタ]では、[プロジェクト エクスプローラ]で[ScriptMain.vb]を開

き、「public Sub Main( )」内のコードを、次のように変更します(変数名の大文字と小文 字に注意してください)。

MessageBox.Show(Dts.Variables("User::var1").Value)

1

2

(27)

このコードにより、変数「var1」の値をメッセージ ボックスで表示できるようになります。 入力後、保存してスクリプト エデゖタを閉じます。 16. [スクリプト タスク エディタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。

タスクの実行

17. 次に、スクリプト タスクを実行するために、[デバッグ]メニューから[デバッグ開始]をク リックして、パッケージを実行します。 1 3 4 入力 2 1

(28)

18. 配置されている[スクリプト タスク]が緑色に、[スクリプト タスク 1]が黄色に変わって、 スクリプト タスクを実行した時の日時がメッセージ ボックスで表示されることを確認でき ます。 [OK]ボタンをクリックすると、[スクリプト タスク 1]が緑色に変わって、スクリプトの 実行が成功したことを確認できます。 19. 確認後、[デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了しま す。 1 1 スクリプト実行時の時刻 が表示される 2

(29)

Note: 変数のスコープとエラー もし、変数のスコープ(有効範囲)が「Package」ではなく「スクリプト タスク」になっている場合は、[スクリ プト タスク]間で変数の値を引き渡せないので、次のようにエラーが発生します。 前述したように、[変数の追加]ボタンをクリックする前に、制御フロー デザ゗ン内の任意の場所をクリックして おくことで、変数のスコープを「Package」にすることができます。[スクリプト タスク]を選択したまま、[変 数の追加]ボタンをクリックすると、スコープが「スクリプト タスク」の変数が作成されてしまうので注意して ください。 1 スコープが 「スクリプト タスク」

(30)

2.4 SQL 実行タスクの結果を変数へ格納

次に、SQL 実行タスクを利用して SQL を実行し、その結果を変数へ格納したり、その変数をデータ フロ ー タスクのパラメータへ受け渡してデータ転送を実行してみましょう。

SQL 実行タスクの結果を変数へ格納

1. まずは、ツールボックスから[SQL 実行タスク]を SSIS デザ゗ナ上へドラッグ ゕンド ド ロップします。 2. 次に、[SSIS]メニューから[変数]をクリックします。 3. [変数]ウゖンドウが表示されたら、次のように[変数の削除]ボタンをクリックします。 すると、[変数の削除の確認]ダ゗ゕログが表示されるので、[はい]ボタンをクリックして、 前の手順で追加した var1 変数を削除します。 1 1 1 2

(31)

4. 続いて、「制御フロー」デザ゗ン内の任意の場所をクリックしてから、[変数の追加]ボタンを クリックし、新しく変数を追加(今回は v1 という名前)します。 5. 次に、もう一度[変数の追加]ボタンをクリックして、もうひとつ変数を追加(今回は v2 と いう名前)します。 6. 次に、SSIS デザ゗ナへ配置した[SQL 実行タスク]をダブル クリックします。 7. [SQL 実行タスク エデゖタ]ダ゗ゕログが表示されたら、[Connection]で「<新しい接 続>」をクリックして、[OLE DB 接続マネージャの構成]ダ゗ゕログを表示し、[新規作成] ボタンをクリックします。 2 3 1 任意の場所をクリック 1 2 ダブル クリック 1 1 1

(32)

8. [接続マネージャ]ダ゗ゕログが表示されたら、[サーバー名]へ SQL Server の名前(ここ では、SERVER1)を入力し、[データベース名の選択または入力]で「sampleDB」データ ベースを選択して、[OK]ボタンをクリックします。 [OLE DB 接続マネージャの構成]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックします。 9. 次に、[SQLStatement]の[...]ボタンをクリックして、[SQL クエリの入力]ダ゗ゕログ を表示し、次の SQL を入力します。この SQL は、sampleDB データベース内にある社員 テーブルから、給与の最大値と最小値を取得するものです。

SELECT MAX(給与) AS maxsal, MIN(給与) AS minsal FROM 社員

1 2 3 1 SQL を記述 2 3

(33)

10. 続いて、[ResultSet]で、クエリ結果の形式を指定します。このクエリの結果は、1 行のみ を返すので、「単一行」を選択します。 11. 次に、[結果セット]ページをクリックして開きます。[追加]ボタンをクリックして、[結果 名]へ給与の最大値の列名である「maxsal」を入力し、[変数名]で「User::v1」を選択し ます。 これにより、SELECT ステートメントで取得した maxsal(MAX(給与))の値を変数 v1 へ 格納できるようになります。 12. 続いて、もう一度[追加]ボタンをクリックして、[結果名]へ給与の最小値の列名である 「minsal」を入力し、[変数名]で「User::v2」を選択して、[OK]ボタンをクリックしま す。 1 2 3 1

(34)

13. 次に、1 つ目の[スクリプト タスク]を右クリックして、[無効化]をクリックし、[スクリ プト タスク]を無効化しておきます。 14. 続いて、[SQL 実行タスク]の緑の矢印を[スクリプト タスク 1]までドラッグ ゕンド ド ロップして伸ばします。 1 2 3 1 緑の矢印をドラッグ &ドロップして、伸 ばす 1

(35)

15. 次に、[スクリプト タスク 1]をダブルクリックします。 16. [スクリプト タスク エデゖタ]が表示されたら、[ReadOnlyVariables]で[...]ボタン をクリックして、[変数の選択]ダ゗ゕログを表示し、追加した「User::v1」と「User::v2」 の変数をチェックして、[OK]ボタンをクリックします。 17. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[スクリプトの編集]ボタンをクリ ックします。 ダブル クリック 1 1 1 2

(36)

18. [ ス ク リ プ ト エ デ ゖ タ ] で は 、 次 の よ う に [ プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ ] で

[ScriptMain.vb]を開き、「public Sub Main( )」内のコードを、次のように変更します (変数名の、大文字と小文字に注意してください)。

MessageBox.Show(Dts.Variables("User::v1").Value _

& " : " & Dts.Variables("User::v2").Value)

このコードにより、変数「v1」と「v2」の値をメッセージ ボックスで表示できるようになり ます。 1 1 3 4 入力 2

(37)

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

タスクの実行

19. 次に、スクリプト タスクを実行するために、[デバッグ]メニューから[デバッグ開始]をク リックして、パッケージを実行します。 20. 配置されている[SQL 実行タスク]が緑色へ、[スクリプト タスク 1]が黄色へ変わって、 社員テーブルの給与の最大値「700000」と最小値「300000」がメッセージ ボックスで表 示されることを確認できます。 [OK]ボタンをクリックすると、[スクリプト タスク 1]が緑色に変わって、スクリプトの 実行が成功したことを確認できます。 このように、SQL 実行タスクで実行した結果は、変数へ格納することができ、それはスクリ プト タスクなどパッケージ内で再利用していくことができます。 21. 確認後、[デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了しま す。 1

(38)

2.5 SQL ステートメントのパラメータ化と変数の引き渡し

SQL ステートメントのパラメータ化と変数の引き渡し

次に、SQL 実行タスクの結果を格納した変数を、データ フロー タスク内 SQL ステートメント のパラメータへ引き渡して、実行できるようにしてみましょう。 1. まずは、[スクリプト タスク 1]を右クリックして[無効化]をクリックし、[スクリプト タ スク 1]を無効にしておきます。 2. 次に、[ツールボックス]を開いて、[データ フロー タスク]をドラッグ ゕンド ドロップし て SSIS デザ゗ナ上へ配置します。 3. 次に、[SQL 実行タスク]の緑色の矢印を、[データ フロー タスク]まで、ドラッグ ゕンド ドロップして伸ばします。 1 1

(39)

4. 続いて、[データ フロー タスク]をダブル クリックして、[データ フロー]タブを表示しま す。 5. [データ フロー]タブが表示されたら、[ツールボックス]から、[OLE DB ソース]を SSIS デザ゗ナ上へドラッグ ゕンド ドロップして配置します。 6. 配置した[OLE DB ソース]をダブル クリックして、[OLE DB ソース エデゖタ]を開き、 [OLE DB 接続マネージャ]で「SERVER1.sampleDB」が選択されていることを確認しま す。 1 ダブル クリック 1 2 ダブル クリック 3 1

(40)

[データ アクセス モード]では、「SQL コマンド」を選択します。これにより、[SQL コマ ンド テキスト]が表示され、SQL が入力できるようになるので、次の SQL を記述します。

SELECT * FROM 社員 WHERE 給与 = ?

「給与 = ?」と記述することで、パラメータが 1 つ(パラメータ 0)作成されています。 SQL を記述後、[パラメータ]ボタンをクリックします。 7. これにより、[クエリ パラメータの設定]ダ゗ゕログが表示されるので、[パラメータ 0]の [変数]で「User::v2」変数を選択して割り当てます。 これで、「給与 = ?」の ? へ代入する値を変数 v2(最小給与が格納されている変数)にする ことができます。 設定後、[OK]ボタンをクリックして、ダ゗ゕログを閉じます。[OLE DB ソース エデゖタ] へ戻ったら、[OK]ボタンをクリックして閉じます。 8. 次に、[ツール ボックス]から[SQL Server 変換先]を SSIS デザ゗ナ上へドラッグ ゕ ンド ドロップして配置します。 2 3 4 1 1 2

(41)

続いて、[OLE DB ソース]の緑色の矢印を[SQL Server 変換先]まで、ドラッグ ゕンド ド ロップして伸ばします。 9. 次に、[SQL Server 変換先]をダブル クリックして、[SQL 変換先エデゖタ]を開き、[接 続マネージャ]で「SERVER1.samplDB」が選択されていることを確認します。 [テーブルまたはビューを使用]で[新規作成]ボタンをクリックします。 10. これにより、[テーブルの作成]ダ゗ゕログが表示されるので、テーブル名を「最小給与社員」 へ変更して、[OK]ボタンをクリックします。 1 ドラッグ&ドロップ して伸ばす 2 1 2

(42)

11. [SQL 変換先エデゖタ]へ戻ったら、[マッピング]ページをクリックして開き、[OK]ボタ ンをクリックします。 12. 次に、[制御フロー]タブをクリックして開いてから、[デバッグ]メニューの[デバッグ開始] をクリックして、パッケージを実行します。 1 2 1 2

(43)

[OK]ボタンをクリックすると、[SQL 実行タスク]と[データ フロー タスク]が緑色に 変わって、パッケージの実行が成功したことを確認できます。 13. 確認後、[デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了しま す。 2 1 1

(44)

転送されたデータの確認

14. 転送されたデータを確認するには、Management Studio から、[最小給与社員]テーブルを 右クリックして[上位 1000 行の選択]をクリックし、データを確認します。 給与が最小の社員が格納されていることを確認できます。 このように、データ フロー タスク内の SQL ステートメントは、パラメータ化することがで き、また、それに対して変数を代入して実行することができます。 1 最小給与の社員 データを取得

(45)

Note: そのほかの便利なタスク Integration Services には、そのほかにも便利なタスクが多くあります。その代表的なものは、次のとおりです。 中でも、FTP サーバーへ接続して、データを取得できる「FTP タスク」と、フゔ゗ル名の変更や削除などが行える「フ ァイル システム タスク」、任意の EXE やバッチ フゔ゗ルを実行できる「プロセス実行タスク」、メールを送信できる 「メール送信タスク」は、大変便利なので、オンラ゗ン ブックなどを参考にぜひ活用してみてください(メール送信タ スクについては、Step4 の Note で説明してします)。 VBScript または JScript でスクリ プトを記述して、任意のコードを実 行できる機能(ただし、次のバー ジョンでは削除される予定の機能) Analysis Services 関連の自動化の ためのタスク フォルダの作成や削除、ファイル名 の変更、ファイルの移動、削除など が行える便利なタスク データのプロファイル(分布状況や文字列 の長さなど)を取得できる便利なタスク。 「新機能編」の自習書で解説 FTP サーバーへ接続してデータ を取得できる大変便利なタスク 任意の Exe ファイルやバッチ ファ イルを実行できる便利なタスク SQL Server Agent ジョブを実行で きるタスク 保守計画ウィザードで実行できる各項 目をそれぞれ実行できるタスク Web サービスをクエリ / 実行 できるタスク メール送信が行える便利なタスク。 Step 4 の Note で説明

(46)

S

S

T

T

E

E

P

P

3

3

.

.

この STEP では、パッケージの実行状態(実行時間やエラーなど)をログへ記録する方 法について説明します。 この STEP では、次のことを学習します。  ログ記録の設定  ログ記録の詳細設定  エラーが発生した場合のログ記録の確認

(47)

3.1 実習を始める前に

転送先となるデータベースの作成

この Step では、SSIS デザ゗ナを使用して、テキスト データを SQL Server 内へ取り込んでい くので、取り込み先(転送先)となる空のデータベースを作成し ておきます。次のように Management Studio で[データベース]フォルダを右クリックして[新しいデータベース]をク リックし、「SSISdb2」という名前のデータベースを作成します(本自習書シリーズの「Integration Services 入門」でこのデータベースを作成している場合は、作成する必要はありません)。

インポートするファイル

゗ンポートするフゔ゗ル(ABC.txt と MISS.txt)は、タブ区切りフゔ゗ルで、サンプル スクリ プトの import フォルダ内へ格納してあります。 「データベース」を右クリック して「新しいデータベース」を クリック 1 データベース名に 「SSISdb2」と入力 2 [OK] ボタン をクリック 3 正常に転送されるフゔ゗ル(ABC.txt) エラーが発生するフゔ゗ル(MISS.txt) 文字と数値が混在している列 数値列 文字列 文字列

(48)

3.2 ログ記録の設定

まずは、テキスト フゔ゗ル(ABC.txt)を SQL Server へ゗ンポートするパッケージを作成し、実行時に ログが記録されるようにしてみましょう。

新しいプロジェクトの作成

1. Business Intelligence Development Studio を起動して、[フゔ゗ル]メニューから[新規

作成]→[プロジェクト]をクリックし、新しいプロジェクトを作成します。 2. [新しいプロジェクト]ダ゗ゕログでは、[プロジェクトの種類]で「ビジネス ゗ンテリジェ ンス プロジェクト」を、[テンプレート]で「Integration Services プロジェクト」を選択 し、[プロジェクト名]を「SSISstep5」、[場所]を「C:\」と入力して、[OK]ボタンをク リックします(このプロジェクトは、step5 でも使用するので、名前を SSISstep5 として います)。 これにより、Integration Services プロジェクトが作成されます。 「フゔ゗ル」メニューの「新規作成」 から「プロジェクト」をクリック 1 1 2 3 4

(49)

データ フロー タスクの追加

3. 次に、データ転送を設定するために、[ツールボックス]の[データ フロー タスク]を SSIS デザ゗ナ上へドラッグ ゕンド ドロップします。 4. 配置した[データ フロー タスク]をダブル クリックして、[データ フロー]タブを表示し ます。

転送元テキスト ファイルの指定

5. 次に、転送元データとしてテキスト フゔ゗ルを指定するために、[ツールボックス]の[デー タ フローの変換元]カテゴリから、[フラット ファイル ソース]を SSIS デザ゗ナ上へド ラッグ ゕンド ドロップします。 1 SSIS デザ゗ナ上へ ドラッグ & ドロップ 2 ダブル クリック 1 ダブル クリック 2 フラットフゔ゗ルソース を ドラッグ&ドロップ 1

(50)

6. 配置した[フラット フゔ゗ル ソース]をダブル クリックして、[フラット フゔ゗ル ソース エデゖタ]ダ゗ゕログを表示し、このダ゗ゕログでは、転送元のテキスト フゔ゗ルを指定す るために[新規作成]ボタンをクリックします。 7. これにより、[フラット フゔ゗ル接続マネージャ エデゖタ]ダ゗ゕログが表示されるので、 [接続マネージャ]へ任意の名前(テキストファイルへの接続 など)と入力し、[参照]ボタ ンをクリックします。 [フゔ゗ルを開く]ダ゗ゕログが表示されたら、サンプル スクリプト内の「import」フォル ダ内にある「ABC.txt」フゔ゗ルを選択して、[開く]ボタンをクリックします。 8. 続いて、「列」ページをクリックして、[列区切り記号]で「タブ {t}」が選択されているこ とを確認します(ABC.txt はタブ区切りのフゔ゗ルです)。 1 3 4 1 2

(51)

[1 ~ 3 行のプレビュー]で転送元のデータを確認します。このフゔ゗ルには、列見出しの 行がないので、列名が自動的に「列 0」、「列 1」と設定されています。

9. 次に、[詳細設定]ページをクリックして開きます。

テキスト フゔ゗ルの場合、デフォルトでは string(文字列)データ型としてデータが転送さ れますが、今回は、「列 0」列(1 番左の列)のデータを数値として転送するように、「列 0」 列の[DataType]を「4 バイト符号付き整数」(SQL Server での int 型に相当するデータ 型)へ変更します。変更後、[OK]ボタンをクリックします。 10. [フラット フゔ゗ル ソース エデゖタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックし て閉じます。 1 2 3 1 2 3 4

(52)

転送先データベースの指定

11. 次に、転送先のデータベースを指定するために、[ツールボックス]の[データ フローの変換 先]カテゴリから、[SQL Server 変換先]を SSIS デザ゗ナ上へドラッグ ゕンド ドロッ プします。 続いて、転送元と転送先を関連付けるために、[フラット フゔ゗ル ソース]の緑色の矢印を [SQL Server 変換先]まで、ドラッグ ゕンド ドロップして伸ばします。 12. 次に、転送先の詳細設定を行うために、[SQL Server 変換先]をダブル クリックします。 1 1 ドラッグ & ドロップし て伸ばす 2

(53)

13. [SQL 変換先エデゖタ]ダ゗ゕログが表示されたら、[接続マネージャ]で[新規作成]ボタ ンをクリックします。 [OLE DB 接続マネージャの構成]ダ゗ゕログが表示されたら、[新規作成]ボタンをクリッ クします。 [接続マネージャ]ダ゗ゕログでは、[サーバー名]へ「SERVER1」、[データベース名の選択 ダブル クリック 1 1 1

(54)

または入力]で「SSISdb2」データベースを選択して、[OK]ボタンをクリックします。 [OLE DB 接続マネージャの構成]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして、閉 じます。これで、SSISdb2 データベースへ接続できるようになります。 14. 次に、データの転送先となるテーブルを作成するために、次のように[SQL 変換先エデゖタ] の[テーブルまたはビューを使用]で[新規作成]ボタンをクリックします。 これにより、[テーブルの作成]ダ゗ゕログが表示されて、転送元のデータをもとにテーブル を作成するための CREATE TABLE ステートメントが表示されます。今回は、テーブル名を 「ABC」へ変更して、[OK]ボタンをクリックします。 [OK]ボタンをクリックしたタ゗ミングで、このステートメントが実行されて、SSISdb2 デ ータベース内へ「ABC」テーブルが作成されます。 15. [SQL 変換先エデゖタ]ダ゗ゕログへ戻ったら、[マッピング]ページをクリックし、転送元 のデータと転送先のデータのマッピングを設定します。 1 2 3 テーブル名を変更 2 3 1

(55)

同じ名前の列同士がマッピングされていることを確認して、[OK]ボタンをクリックします。 これで、ABC.txt のデータが SSISdb2 データベースへ゗ンポートすることができるように なりました。

ログ記録の設定

続いて、パッケージの実行時に、ログがテキスト フゔ゗ルに記録されるようにしてみましょう。 16. 次のように、[SSIS]メニューから[ログ記録]をクリックします。 17. これにより、[SSIS ログの構成]ダ゗ゕログが表示されるので、[プロバイダの種類]で「テ キスト ファイルの SSIS ログ プロバイダ」を選択して、[追加]ボタンをクリックします。 1 3 2 1

(56)

次に、追加したログの[構成]で、「<新しい接続>」をクリックします。 18. [フゔ゗ル接続マネージャ エデゖタ]が表示されたら、[使用法の種類]で、ログ記録用のフ ゔ゗ルを新しく作成するために「ファイルの作成」を選択し、[ファイル]で任意のフゔ゗ル 名(ここでは、C:\logging1.txt)と入力して、[OK]ボタンをクリックします。 19. [SSIS ログの構成]ダ゗ゕログへ戻ったら、[コンテナ]で「Package」をチェックして、 [コンテナに対して使用するログを選択します]で追加したログをチェックし、[OK]ボタン をクリックします。 1 2 3 1 2 3 1 2 3

(57)

パッケージの実行

20. ここまでの設定を確認するために、[デバッグ]メニューから[デバッグの開始]をクリック し、パッケージを実行します。 配置されているオブジェクトが緑色に変わって、データの転送が成功したことを確認したら、 [デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。 もう 1 度、デバッグを開始して、パッケージを合計で 2 回実行します。

21. データが正常に転送されたことを確認するには、Management Studio から、SSISdb2 デー

タベースの[ABC]テーブルを右クリックして[上位 1000 行の選択]をクリックし、デー タを確認します。 パッケージを 2 回実行しているので、2 回分のデータが゗ンポートできていることを確認で きます。 22. 次に、Windows エクスプローラを起動して、C:\logging1.txt フゔ゗ルをダブル クリック して開き、記録されたログを確認します。 1 1

(58)

パッケージを実行した開始時刻(PackageStart)と終了時刻(PackageEnd)が 2 回分記 録されていることを確認することができます。

このように、ログ記録を設定すると、パッケージの実行に関するログを簡単に取得できるよう になります。

(59)

3.3 ログ記録の詳細設定

ログ記録の詳細設定

前の手順のログ記録では、パッケージの開始時刻と終了時刻にみの記録でしたが、ログ記録では、 それ以外の情報(エラー情報など)も記録することができます。それはこれを試してみましょう。 1. ログ記録の設定を変更するには、[SSIS]メニューから[ログ記録]をクリックします。 2. [SSIS ログの構成]ダ゗ゕログが表示されたら、[詳細]タブをクリックしてページを開き、 ログを記録する゗ベントを選択します。 こ こ で は 、「 OnError 」( エ ラ ー の 発 生 )、「 OnInformation 」( 情 報 メ ッ セ ー ジ )、 「OnTaskFailed」(タスクの失敗)、「OnWarning」(警告)をチェックして、[OK]ボタン をクリックします。

パッケージの実行

1 2 3 4 5 6 1

(60)

し、パッケージを実行します。 配置されているオブジェクトが緑色に変わって、データの転送が成功したことを確認したら、 [デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。 4. 次に、Windows エクスプローラから、C:\logging1.txt フゔ゗ルを開いて、記録されたロ グを確認します。 パッケージを実行した開始時刻(PackageStart)と終了時刻(PackageEnd)に加えて、タ 1

(61)

スクの情報(OnInformation)が記録されていることを確認できます。今回は、正常にデー タが転送されているので、OnError や OnTaskFailed、OnWarning については、記録さ れていません。 Note: [実行結果](進捗状況)タブと同じ情報が記録される ログ記録では、パッケージの[実行結果]タブと同じ結果を取得できます。 1

(62)

3.4 エラー発生時のログ記録の確認

次に、転送元のテキスト フゔ゗ルを「MISS.txt」フゔ゗ルへ変更して、転送時にデータ型に関するエラー が発生するようにして、エラー発生時にどういったログが記録されるのかを確認してみましょう。

転送元のテキスト ファイルの変更

1. 転送元のテキスト フゔ゗ルを変更するには、次のように[データ フロー]タブの画面下部の [接続マネージャ]に一覧されている「テキストファイルへの接続」(Step 3.2 で作成したも の)をダブル クリックします。 2. これにより、[フラット フゔ゗ル接続マネージャ エデゖタ]ダ゗ゕログが表示されるので、 [フゔ゗ル名]の[参照]ボタンをクリックして、サンプル スクリプト内の「import」フォ ルダ内にある「MISS.txt」フゔ゗ルへ変更します。 1 ダブル クリック 2 1 2 3

(63)

これにより、次のメッセージが表示されるので、今回は、前回の列情報を維持するために[は い]ボタンをクリックします。 3. 続いて、次のように「列」ページをクリックして、[1 ~ 3 行のプレビュー]で転送元とな るデータを確認します。 1 列目の「列 0」列には、文字データが含まれていることに注目します。 4. 続いて、[詳細設定]ページをクリックして開き、前の Step の手順 8 で設定したように「列

0」列の[DataType]が「4 バイト符号付き整数」(SQL Server の int 型に相当)になって いることを確認します。確認後、[OK]ボタンをクリックして、[フラット フゔ゗ル接続マネ ージャ エデゖタ]ダ゗ゕログを閉じます。 1 1 2 1 2 3 4

(64)

データ転送の実行

5. ここまでの設定を確認するために、[デバッグ]メニューから[デバッグ開始]をクリックし て、パッケージを実行します。 今度は、[フラット フゔ゗ル ソース]が赤色に変わって、データ転送が失敗していることを 確認できます。 6. [デバッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。 7. 続いて、[実行結果]タブをクリックして、実行結果を確認します。 「データ変換が失敗しました。列 "列 0" の~」というエラーが発生して、MISS.txt の「列 0」でのデータ型の変換エラーによって、パッケージ実行が失敗したことを確認できます。こ れは、列 0(1 列目)のデータ型を int 型に設定しているにも関わらず、文字データが含ま れているために発生しています。 1 2 MISS.txt の 列0 列で データ変換エラー タスクの失敗 1 2 3

(65)

8. 次に、Windows エクスプローラから、C:\logging1.txt フゔ゗ルを開いて、記録されたロ グを確認します。 : (中略) 今 回 は デ ー タ 転 送 が 失 敗 し た の で 、 エ ラ ー の 発 生 ( OnError ) と タ ス ク の 失 敗 (OnTaskFailed)、が記録されることを確認できます。 このように、ログ記録を設定しておくと、パッケージの実行エラーを記録することができるの で、大変便利です。 9. 最後に、SSISstep5 プロジェクトを保存しておきます。このプロジェクトは、次の Step で も引き続き使用します。 列0 でデータ変換エラー データ フロー タスクが失敗

(66)

S

S

T

T

E

E

P

P

4

4

.

.

この STEP では、パッケージの実行゗ベントの内容に応じて、タスクを実行する方法を 説明します。 この STEP では、次のことを学習します。  ゗ベント ハンドラの設定  エラー発生時のスクリプト実行

(67)

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

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

SSISstep5 プロジェクトを開く

1. まずは、Business Intelligence Development Studio を起動し、次のように[フゔ゗ル]メ

ニューの[開く]から[プロジェクト/ソリューション]をクリックして、「C:\SSISstep5」 フォルダの「SSISstep5.sln]フゔ゗ルを選択し、Step3 で作成した「SSISstep5」プロジ ェクトを開きます。

イベント ハンドラの設定

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

(68)

3. 今回は、エラー発生時に実行するタスクを設定するために、[゗ベント ハンドラ]で「OnError」 を選択して、[実行可能ファイル 'Package' の 'OnError' イベントハンドラを作成するに はここをクリックします]をクリックします。 4. 次に、エラー発生時に実行するタスクを設定していきます。今回は、[ツール ボックス]から [スクリプト タスク]をドラッグ ゕンド ドロップして、配置します。 5. 配置した[スクリプト タスク]をダブル クリックします。 1 2 1

(69)

6. [スクリプト タスク エデゖタ]ダ゗ゕログが表示されたら、今回は Visual Basic でスクリ

プトを記述するために[ScriptLanguage]で「Microsoft Visual Basic 2008」を選択し ます。 7. 続いて、[ReadOnlyVariables]で[...]ボタンをクリックして、[変数の選択]ダ゗ゕログ を 表 示 し 、 シ ス テ ム 変 数 の 一 覧 か ら 「 System::ErrorCode 」( エ ラ ー 番 号 ) と 「System::ErrorDescription」(エラーの説明)をチェックします。 ダブル クリック 1 1

(70)

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

9. [スクリプト エデゖタ]では、[プロジェクト エクスプローラ]で[ScriptMain.vb]を開

き、「public Sub Main( )」内のコードを、次のように入力します(変数名の大文字と小文 字に注意してください)。

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

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

1

2

3

(71)

このコードにより、エラー番号とエラーの説明をメッセージ ボックスで表示できるようにな ります。 入力後、保存してスクリプト エデゖタを閉じます。 10. [スクリプト タスク エデゖタ]ダ゗ゕログへ戻ったら、[OK]ボタンをクリックして閉じま す。 1 入力 3 4 2 1

(72)

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

11. [デバッグ]メニューから[デバッグの開始]をクリックしてパッケージを実行します。 配置されている[スクリプト タスク]が黄色に変わり、エラー番号とエラーの説明がメッセ ージ ボックスで表示されることを確認できます。 このメッセージ ボックスは、エラー(OnError ゗ベント)が発生した数分表示されるので、 その分[OK]ボタンをクリックします。 12. すべてのメッセージ ボックスが表示され、[スクリプト タスク]が緑色に変わったら、[デバ ッグ]メニューから[デバッグの停止]をクリックして、デバッグを終了します。 このように、゗ベント ハンドラを利用すると、パッケージのエラー発生時などに応じて、タ 1

(73)

Note: エラー発生時にメール送信(メール送信タスク) OnError ゗ベント ハンドラや OnTaskFailed(タスクの失敗)゗ベント ハンドラでは、メール送信タスクを利用 すると、エラー発生時にメールを送信できるようになるので便利です。 メール送信タスクでは、次のように SMTP サーバーの名前と送信元/先のメール ゕドレス、件名を設定するだけ でメールを送信することができます。 メールの本文として ErrorCode や ErrorDescription を送信するには、次のように[式]ページで [MessageSource]プロパテゖを設定するようにします。 1 SMTP サーバーの名 前またはゕドレス 2 3 v 2 ErrorCode を DT_STR 関数で文字列へキャス トして、ErrorDescription と文字列連結 4 1 エラー発生時の エラー メッセージを メールで受信できる ようになる

(74)

S

S

T

T

E

E

P

P

5

5

.

.

この STEP では、データ転送時にエラーが発生した場合の対処方法について説明しま す。 この STEP では、次のことを学習します。  エラー発生時の動作  エラーを無視して実行する方法  エラー情報をフゔ゗ルへ書き込む方法  スクリプト コンポーネント(C#)によるエラー メッセージの取得

(75)

5.1 作成するパッケージの概要

この STEP では、データ転送時に起こりがちな、転送元のデータに゗レギュラーな値が入っていた場合に発 生するエラーの対処方法について説明します。Step4 で作成したエラーの発生するパッケージ(SSISstep5 プロジェクト)を利用して、エラーの対処方法を試していきます。

SSISstep5 プロジェクトの内容

この Step の実習を行うには、事前に Step3 と Step4 を行い、SSISstep5 プロジェクトを作 成しておくことが必要です。SSISstep5 プロジェクトのパッケージは、次のようなテキスト フゔ ゗ル(タブ区切り)のデータを SQL Server へ転送し、データ型のエラー(文字と数値が混在し ている場合のエラー)を発生させるものです。

転送するファイル

作成するパッケージ

この Step では、SSISstep5 プロジェクトを、次のように変更していきます。 正常に転送されるフゔ゗ル(ABC.txt) エラーが発生するフゔ゗ル(MISS.txt) 文字と数値が混在している列 数値列 文字列 文字列 ゗レギュラーな値 の場合の処理 正常な値の 場合の処理 スクリプト コンポーネント でエラーの詳細を取得 エラーをフゔ゗ルへ 書き込み

(76)

5.2 SSISstep5 プロジェクトでエラーが発生することの確認

SSISstep5 プロジェクトを開く

1. まずは、Business Intelligence Development Studio を起動し、次のように[フゔ゗ル]メ

ニューの[開く]から[プロジェクト/ソリューション]をクリックして、「C:\SSISstep5」 フォルダの「SSISstep5.sln]フゔ゗ルを選択し、Step4 で作成した「SSISstep5」プロジ ェクトを開きます。 2. このパッケージは、テキスト フゔ゗ル(MISS.txt)を SSISdb2 データベース内へ゗ンポー トするものです。[データ フロー]タブを開いて、これを確認します。

転送先の ABC テーブルを空にする

次に、パッケージの実行結果を確認しやすくするために、転送先の SSISdb2 データベース内にあ る ABC テーブルを一度空にしておきます。 1 2 3 1

(77)

3. Management Studio を起動して、クエリ エデゖタから次のように TRUNCATE TABLE ス

テートメントを実行して、「ABC」テーブルのすべてのデータを削除しておきます。

USE SSISdb2 TRUNCATE TABLE ABC

パッケージの実行がエラーになることの確認

4. 次に、[デバッグ]メニューから[デバッグ開始]をクリックしてパッケージを実行してみま す。 配置されている[フラット フゔ゗ル ソース]が黄色に変わって、前の Step で作成した OnError ゗ベント ハンドラが実行されて、エラー番号とエラーの説明がメッセージ ボック スで表示されることを確認できます。 このメッセージ ボックスは、エラー(OnError ゗ベント)が発生した数分表示されるので、 1

(78)

5. すべてのメッセージ ボックスが表示され、すべてのコンポーネントが赤色に変わって、転送

が失敗したことを確認できます。

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

6. 次に、Management Studio から、[ABC]テーブルを右クリックして[上位 1000 行の選

択]をクリックし、データを確認します。

データ転送が失敗しているので、MISS.txt フゔ゗ルのデータは追加されていないことを確認 できます。

1

(79)

5.3 エラーを無視する

SSIS パッケージには、データ転送時にエラーが発生した場合でも、エラーを無視してデータ転送を続行さ せる機能があります。では、これを試してみましょう。

エラーを無視する設定

1. エラーを無視させるには、次のように配置した[フラット フゔ゗ル ソース]をダブル クリ ックして[フラット フゔ゗ル ソース エデゖタ]ダ゗ゕログを表示します。 2. [フラット フゔ゗ル ソース エデゖタ]ダ゗ゕログで、[エラー出力]ページをクリックし、 [列 0]の[エラー]ドロップダウン リストを「エラーを無視する」へ変更し、[OK]ボタ ンをクリックします。 ダブル クリック 2 1 2 3

参照

関連したドキュメント

委員長 山崎真人 委員 田中貞雄 委員 伊藤 健..

タカチ総合カタログ2018ー19年度版 465 表 2018年 11月 8日 木曜日 8:41:53 AM Cyan タカチ総合カタログ2018ー19年度版 465 表 2018年

2012年11月、再審査期間(新有効成分では 8 年)を 終了した薬剤については、日本医学会加盟の学会の

大正13年 3月20日 大正 4年 3月20日 大正 4年 5月18日 大正10年10月10日 大正10年12月 7日 大正13年 1月 8日 大正13年 6月27日 大正13年 1月 8日 大正14年 7月17日 大正15年

第1回 平成27年6月11日 第2回 平成28年4月26日 第3回 平成28年6月24日 第4回 平成28年8月29日

年間約5万人の子ども達が訪れる埋立処分場 見学会を、温暖化問題などについて総合的に

2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月.  過去の災害をもとにした福 島第一の作業安全に関する

「2008 年 4 月から 1