次の方法で共有


スクリプト コンポーネントのコーディングおよびデバッグ

更新 : 2006 年 4 月 14 日

SSIS デザイナでは、スクリプト コンポーネントにメタデータ デザイン モードとコード デザイン モードの 2 つのモードがあります。[スクリプト変換エディタ] を開くと、スクリプト コンポーネントはメタデータ デザイン モードになります。このモードでは、メタデータを構成し、コンポーネントのプロパティを設定します。メタデータ デザイン モードで、スクリプト コンポーネントのプロパティを設定して、入力と出力を構成したら、コード デザイン モードに切り替えてカスタム スクリプトを記述できます。メタデータ デザイン モードとコード デザイン モードの詳細については、「スクリプト コンポーネント エディタでのスクリプト コンポーネントの構成」を参照してください。

ms136033.note(ja-jp,SQL.90).gif重要 :
スクリプト タスク プロジェクトからの他のアセンブリや名前空間の参照に関する重要な情報については、「スクリプティング ソリューションでの他のアセンブリの参照」を参照してください。

コード デザイン モードでのスクリプトの記述

スクリプト コンポーネント開発環境

[スクリプト変換エディタ][スクリプト] ページで [スクリプトのデザイン] をクリックし、Visual Studio for Applications (VSA) IDE を開いて、スクリプトを記述します。VSA IDE には、色分け表示が可能な Visual Studio エディタ、IntelliSense、オブジェクト ブラウザなど、Visual Studio .NET 環境での標準機能がすべて含まれています。

スクリプト言語は、Microsoft Visual Basic .NET です。その他のプログラミング言語を使用する場合は、選択した言語でカスタム アセンブリを作成し、スクリプト コンポーネント内のコードからその機能を呼び出すことができます。

スクリプト コンポーネントで作成したスクリプトは、IDE を閉じるたびに自動的に保存され、パッケージ定義に格納されます。個別のスクリプト ファイルはありません。したがって、スクリプト コンポーネントを使用してもパッケージの配置には影響しません。

既定では、Option Strict が IDE で有効になっています。

スクリプト コンポーネント プロジェクトの構造

スクリプト コンポーネントの威力は、インフラストラクチャ コードを生成して、記述する必要のあるコード量を減らす機能にあります。この機能を実現するには、入力と出力、およびその列とプロパティが固定され、既知である必要があります。したがって、コンポーネントのメタデータに後で変更を加えた場合、記述したコードが無効になり、パッケージの実行中にコンパイル エラーが発生する可能性があります。

スクリプト コンポーネント プロジェクトのプロジェクト アイテムおよびクラス

コード デザイン モードに切り替えると、VSA IDE が開き、ScriptMain プロジェクト アイテムが表示されます。ScriptMain プロジェクト アイテムには、編集可能な ScriptMain クラスが含まれています。このクラスは、スクリプトのエントリ ポイントとしての役割を果たし、ここにコードを記述します。スクリプト プロジェクトには、次の 2 つの読み取り専用のプロジェクト アイテムが自動生成され、追加されます。

  • 次の 3 つのクラスを含む ComponentWrapper プロジェクト アイテム。
    • UserComponent クラス。ScriptComponent から継承され、データの処理およびパッケージとのやり取りに使用するメソッドおよびプロパティが含まれています。ScriptMain クラスは UserComponent クラスから継承されます。
    • Connections コレクション クラス。[スクリプト変換エディタ] の [接続マネージャ] ページで選択された、接続への参照が含まれています。
    • Variables コレクション クラス。[スクリプト変換エディタ][スクリプト] ページで、ReadOnlyVariable および ReadWriteVariables プロパティに入力された変数への参照が含まれています。
  • BufferWrapper プロジェクト アイテム。[スクリプト変換エディタ][入力および出力] ページで構成された各入力および出力に対して、ScriptBuffer から継承されたクラスが含まれています。これらの各クラスには、構成された入力列と出力列、およびそれらの列が含まれるデータ フロー バッファに対応する、型指定されたアクセサ プロパティが含まれています。

これらのオブジェクト、メソッド、およびプロパティの使用方法については、「スクリプト コンポーネントのオブジェクト モデルについて」を参照してください。特定の種類のスクリプト コンポーネントで、これらのクラスのメソッドおよびプロパティを使用する方法については、セクション「その他のスクリプト コンポーネントの例」を参照してください。サンプルについてのトピックでは、完全なコード例も示します。

既定では、ScriptMain プロジェクト アイテムには、次のコードが自動生成されます。

' Microsoft SQL Server Integration Services user script component
' This is your new script component in Microsoft Visual Basic .NET.
' ScriptMain is the entry point class for script components.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
    Inherits UserComponent

    Public Overrides Sub CreateNewOutputRows()
        '
        ' Add rows by calling the AddRow method on the member variable called "<Output Name>Buffer"
        ' For example, if your output was named "My Output", call MyOutputBuffer.AddRow().
        '
    End Sub

End Class

スクリプト コンポーネント プロジェクトのその他のプロジェクト アイテム

スクリプト コンポーネント プロジェクトには、既定の ScriptMain アイテム以外のアイテムを格納できます。プロジェクトには、クラス、モジュール、コード ファイル、およびフォルダを追加できます。また、フォルダを使用してアイテムのグループを整理できます。

追加したすべてのアイテムは、パッケージ内部に保存されます。ただし、VSA の [プロジェクト エクスプローラ] ウィンドウでアイテムを右クリックし、[エクスポート] をクリックすると、アイテムのコピーをファイル システムに保存できます。既存の Visual Basic .NET コード ファイルをスクリプト コンポーネント プロジェクトにインポートして追加することもできます。

スクリプト コンポーネント プロジェクトの参照

参照をマネージ アセンブリに追加するには、スクリプト コンポーネント プロジェクト内の [プロジェクト エクスプローラ][参照] フォルダを右クリックし、次に [参照の追加] をクリックします。VSA では、マネージ アセンブリへの参照のみがサポートされています。詳細については、「スクリプティング ソリューションでの他のアセンブリの参照」を参照してください。

ms136033.note(ja-jp,SQL.90).gifメモ :
VSA IDE 内のプロジェクトの参照は、[クラス ビュー] ウィンドウ、または [プロジェクト エクスプローラ] で表示できます。[表示] メニューの [プロジェクト エクスプローラ] をクリックし、[プロジェクト エクスプローラ] ウィンドウを開きます。新しい参照は [プロジェクト] メニューまたは [プロジェクト エクスプローラ] から追加できますが、[クラス ビュー] ウィンドウからは追加できません。[プロジェクト] メニューは、コード ウィンドウまたは [プロジェクト エクスプローラ] で作業している間は使用できますが、[クラス ビュー] ウィンドウでアイテムを選択しているときには使用できません。
ms136033.note(ja-jp,SQL.90).gifメモ :
Microsoft Visual Studio for Applications 内の [参照の追加] ダイアログ ボックスの [.NET] タブには、%windir%\Microsoft.NET\Framework\v2.0.xxxxx フォルダ内にあるマネージ アセンブリの一覧が示されます。そのため、既定では、この一覧に表示されるのは主に Microsoft .NET Framework クラス ライブラリからのアセンブリに限定されます。この一覧の内容はファイルの場所によってのみ決定され、グローバル アセンブリ キャッシュ (GAC) にインストールされたファイル、またはアセンブリの他の属性やプロパティによっては決定されません。したがって、参照するアセンブリのコピーが、指定したフォルダに存在する必要があります。VSA の [参照の追加] ダイアログ ボックスには、Microsoft Visual Studio に存在する、別のフォルダ内のマネージ アセンブリの場所を探して参照するための [参照] ボタンは含まれていません。また、COM コンポーネントを参照するための [COM] タブも含まれていません。

スクリプト コンポーネント内でのパッケージとの対話

スクリプト コンポーネント内で記述するカスタム スクリプトは、自動生成された基本クラス内の、厳密に型指定されたアクセサを使用して、コンポーネントに含まれているパッケージの変数や接続マネージャにアクセスし、それらを使用できます。ただし、変数および接続マネージャをスクリプトで使用できるようにするには、コード デザイン モードに切り替える前に、その両方を設定する必要があります。また、スクリプト コンポーネントのコードから、イベントを発生させたり、ログ記録を実行することもできます。

スクリプト コンポーネント プロジェクト内に自動生成されるプロジェクト アイテムには、パッケージと情報をやり取りするために、以下のオブジェクト、メソッド、およびプロパティが用意されています。

パッケージの機能 アクセス方法

変数

ComponentWrapper プロジェクト アイテムの Variables コレクション クラス内の、名前付きで型指定されたアクセサ プロパティを使用します。これは ScriptMain クラスの Variables プロパティを介して公開されています。

接続

ComponentWrapper プロジェクト アイテムの Connections コレクション クラス内の、名前付きで型指定されたアクセサ プロパティを使用します。これは ScriptMain クラスの Connections プロパティを介して公開されています。

イベント

ScriptMain クラスの ComponentMetaData プロパティおよび IDTSComponentMetaData90 インターフェイスの Fire<X> メソッドを使用して、イベントを発生させます。

ログ記録

ScriptMain クラスの Log メソッドを使用して、ログ記録を実行します。

スクリプト コンポーネントのデバッグ

スクリプト コンポーネントでは、ブレークポイントの使用はサポートされていません。そのため、コードをステップ スルーしてパッケージの実行中に値を検証することはできません。ただし、次の方法を使用することにより、スクリプト コンポーネントの実行を監視できます。

  • 実行を中断し、System.Windows.Forms 名前空間の MessageBox.Show メソッドを使用して、モーダル メッセージを表示します。デバッグが完了したら、このコードは削除してください。
  • 情報メッセージ、警告、およびエラーを発生させます。FireInformationFireWarning、および FireError メソッドで、Visual Studio の**[出力]** ウィンドウにイベント説明を表示します。ただし、FireProgress メソッド、Console.Write メソッド、および Console.WriteLine メソッドでは、[出力] ウィンドウに情報は表示されません。FireProgress イベントからのメッセージが SSIS デザイナの [進行状況] タブに表示されます。詳細については、「スクリプト コンポーネントでのイベントの発生」を参照してください。
  • イベントまたはユーザー定義のメッセージを、有効なログ プロバイダに記録します。詳細については、「スクリプト コンポーネントでのログ記録」を参照してください。

データを変換先に保存せずに、変換元または変換として構成されたスクリプト コンポーネントの出力を調べるだけの場合は、行数変換 を使用してデータ フローを終了し、スクリプト コンポーネントの出力にデータ ビューアをアタッチできます。データ ビューアの詳細については、「データ フローのデバッグ」を参照してください。

概要

スクリプト コンポーネントのコーディングの詳細については、このセクションの次のトピックを参照してください。

トピック 説明

スクリプト コンポーネントのオブジェクト モデルについて

スクリプト コンポーネントで使用できる、オブジェクト、メソッド、およびプロパティの使用方法について説明します。

スクリプティング ソリューションでの他のアセンブリの参照

スクリプト コンポーネントで、.NET Framework クラスからオブジェクトを参照する方法について説明します。

スクリプト コンポーネントに対するエラー出力のシミュレート

スクリプト コンポーネントによる処理中にエラーを発生させる行の、エラー出力のシミュレーション方法について説明します。

参照

関連項目

スクリプティング ソリューションでの他のアセンブリの参照

概念

スクリプト コンポーネント エディタでのスクリプト コンポーネントの構成
スクリプト コンポーネントのオブジェクト モデルについて

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • カスタム アセンブリを他のプログラミング言語のプログラムに使用できることを追加しました。
  • スクリプトが自動的に保存されることを追加しました。
  • Option Strict が既定で有効であることを追加しました。
  • コード ファイルがエクスポートおよびインポート可能であることを追加しました。

2005 年 12 月 5 日

新しい内容 :
  • 新しいスクリプト コンポーネントで自動生成される既定のコードを追加しました。
  • デバッグ時の行数変換およびデータ ビューアの使用方法に関するヒントを追加しました。