カスタム オブジェクトのビルド、配置、およびデバッグ
新規 : 2006 年 4 月 14 日
Integration Services 用カスタム オブジェクトのコードを記述したら、アセンブリをビルドして配置し、SSIS デザイナに統合してパッケージで使用できるようにし、テストとデバッグを行う必要があります。
Integration Services 用カスタム オブジェクトのビルド、配置、およびデバッグ手順
オブジェクトのカスタム機能は既に記述しました。次に、オブジェクトをテストし、ユーザーが使用できるようにする必要があります。そのための手順は、Integration Services 用に作成できるカスタム オブジェクトのすべての種類でほぼ同じです。
オブジェクトのビルド、配置、およびデバッグ手順を次に示します。
- 生成するアセンブリに厳密な名前で署名します。
- アセンブリをビルドします。
- 適切な Integration Services フォルダに移動またはコピーすることにより、アセンブリを配置します。
- グローバル アセンブリ キャッシュ (GAC) にアセンブリをインストールします。
- オブジェクトがタスクまたはデータ フロー コンポーネントである場合は、そのオブジェクトをツールボックスに追加します。
- 必要に応じて、配置のトラブルシューティングを行います。
- コードのテストとデバッグを行います。
アセンブリへの署名
アセンブリを共有することを目的としている場合は、アセンブリをグローバル アセンブリ キャッシュにインストールする必要があります。グローバル アセンブリ キャッシュに追加されたアセンブリは、Business Intelligence Development Studio などのアプリケーションで使用できるようになります。グローバル アセンブリ キャッシュの要件として、アセンブリに厳密な名前で署名する必要があります。これにより、アセンブリがグローバルに一意であることが保証されます。厳密な名前が付けられたアセンブリは、アセンブリの名前、カルチャ、公開キー、およびバージョン番号を含む完全修飾名を持ちます。ランタイムはこの情報を使用して、アセンブリを検索し、同じ名前の他のアセンブリと区別します。
アセンブリに厳密な名前で署名するには、公開キーと秘密キーのペアを保持しているか、または作成する必要があります。この暗号化用の公開キーと秘密キーのペアがビルド時に使用され、厳密な名前のアセンブリが作成されます。
厳密な名前と、アセンブリへの署名に必要な手順の詳細については、.NET Framework SDK のドキュメントの次のトピックを参照してください。
- 厳密な名前付きアセンブリ
- キー ペアの作成
- 厳密な名前でのアセンブリへの署名
アセンブリには、Visual Studio でビルド時に厳密な名前を使用して簡単に署名できます。[プロジェクトのプロパティ] ダイアログ ボックスで、[署名] タブをクリックします。[アセンブリの署名] を選択し、キー (.snk) ファイルのパスを指定します。
アセンブリのビルド
プロジェクトに署名したら、BI Development Studio の [ビルド] メニューで使用可能なコマンドを使用して、プロジェクトまたはソリューションを、ビルドまたはリビルドする必要があります。ソリューションには、カスタム ユーザー インターフェイス用の独立したプロジェクトが含まれている場合があります。このプロジェクトにも厳密な名前で署名する必要があり、同時にビルドすることが可能です。
アセンブリの配置とグローバル アセンブリ キャッシュへのインストールを実行するための最も便利な方法は、これらの手順を Visual Studio でビルド後のイベントとしてスクリプト処理することです。ビルド イベントは、Visual Basic プロジェクトのプロジェクト プロパティの [コンパイル] ページ、および C# プロジェクトの [ビルド イベント] ページから使用できます。gacutil.exe などのコマンド プロンプト ユーティリティは、完全なパスで指定する必要があります。スペースを含むパスと、スペースを含むパスに展開される $(TargetPath) などのマクロは、引用符で囲む必要があります。
カスタム ログ プロバイダのビルド後に実行するコマンド ラインの例を次に示します。
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -u $(TargetName)
copy "$(TargetPath)" "C:\Program Files\Microsoft SQL Server\90\DTS\LogProviders\HTMLLogProviderVB.dll"
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -i "C:\Program Files\Microsoft SQL Server\90\DTS\LogProviders\HTMLLogProviderVB.dll"
アセンブリの配置
SSIS デザイナは、SQL Server 2005 Integration Services (SSIS) のインストール時に作成される一連のフォルダ内で検索されたファイルを列挙することにより、パッケージで使用できるカスタム オブジェクトを検索します。既定の SQL Server インストール設定を使用した場合、この一連のフォルダは C:\Program Files\Microsoft SQL Server\90\DTS にあります。ただし、カスタム オブジェクトのセットアップ プログラムを作成する場合は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTS\Setup\DtsPath レジストリ キーの値をチェックしてこのフォルダの場所を確認してください。
アセンブリをフォルダに配置する方法は 2 つあります。
- コンパイル済みのアセンブリをビルド後に適切なフォルダに移動またはコピーします (ビルド後のイベントにコピー コマンドを含めると便利です)。
- 適切なフォルダでアセンブリを直接ビルドします。
C:\Program Files\Microsoft SQL Server\90\DTS にある次の配置フォルダは、さまざまな種類のカスタム オブジェクトに使用されます。
カスタム オブジェクト | 配置フォルダ |
---|---|
タスク |
Tasks |
接続マネージャ |
Connections |
ログ プロバイダ |
LogProviders |
データ フロー コンポーネント |
PipelineComponents |
メモ : |
---|
アセンブリは、使用可能なタスクや接続マネージャなどの列挙をサポートするために、これらのフォルダにコピーされます。したがって、カスタム オブジェクトのカスタム ユーザー インターフェイスのみを含むアセンブリをこれらのフォルダに配置する必要はありません。 |
グローバル アセンブリ キャッシュへのアセンブリのインストール
タスク アセンブリをグローバル アセンブリ キャッシュ (GAC) にインストールするには、コマンド ライン ツール gacutil.exe を使用するか、アセンブリを %system%\assembly
ディレクトリにドラッグします。gacutil.exe への呼び出しをビルド後のイベントに含めると便利です。
次のコマンドでは、gacutil.exe を使用して MyTask.dll という名前のコンポーネントを GAC にインストールします。
gacutil /iF MyTask.dll
カスタム オブジェクトの新しいバージョンをインストールしたら、SSIS デザイナを閉じて再度開く必要があります。グローバル アセンブリ キャッシュに以前のバージョンのカスタム オブジェクトをインストールしている場合は、新しいバージョンをインストールする前に以前のバージョンを削除する必要があります。アセンブリをアンインストールするには、gacutil.exe を実行し、/u
オプションを使用してアセンブリ名を指定します。
グローバル アセンブリ キャッシュの詳細については、.NET Framework ツールのグローバル アセンブリ キャッシュ ツール (Gactutil.exe) を参照してください。
ツールボックスへのタスクまたはデータ フロー コンポーネントの追加
カスタム オブジェクトを配置してグローバル アセンブリ キャッシュにインストールしたら、SQL Server 2005 Integration Services (SSIS) に含まれているすべてのオブジェクトと同様に、Business Intelligence Development Studio で使用することができます。ただし、カスタム オブジェクトを [ツールボックス] に明示的に追加する必要があります。
カスタム コンポーネントをツールボックスに追加するには
ツールボックスを右クリックして、[アイテムの選択] をクリックします。
[ツールボックス アイテムの選択] ダイアログ ボックスで、タスクの場合は [SSIS 制御フロー項目] タブ、データ フロー コンポーネントの場合は [SSIS データ フロー項目] タブをクリックします。
コンポーネントの隣のチェック ボックスをオンにして、[OK] をクリックします。
メモ : |
---|
コンポーネントが一覧に表示されない場合は、[参照] をクリックしてコンポーネントを検索できます。ただし、表示されない場合は正しくインストールされていない可能性があります。 |
配置のトラブルシューティング
カスタム オブジェクトが [ツールボックス] または使用可能なオブジェクトの一覧に表示されるのに、パッケージに追加できない場合は、次の操作を試してください。
- グローバル アセンブリ キャッシュにコンポーネントの複数のバージョンがないか検索します。グローバル アセンブリ キャッシュにコンポーネントの複数のバージョンがある場合、デザイナはコンポーネントを読み込めないことがあります。アセンブリのすべてのインスタンスをグローバル アセンブリ キャッシュから削除し、アセンブリを再度追加してください。
- 配置フォルダに存在するアセンブリのインスタンスが 1 つだけであることを確認します。
- ツールボックスをリセットします。
- Visual Studio を devenv.exe にアタッチし、ブレークポイントを設定して初期化コードを実行し、例外が発生しないことを確認します。
コードのテストとデバッグ
カスタム オブジェクトの実行時のメソッドをデバッグするための最も簡単な方法は、カスタム オブジェクトのビルド後に Visual Studio 2005 から dtexec.exe を起動し、コンポーネントを使用するパッケージを実行することです。
Validate メソッドなど、コンポーネントのデザイン時のメソッドをデバッグする場合は、コンポーネントを使用するパッケージを Visual Studio の 2 番目のインスタンスで開き、devenv.exe プロセスにアタッチします。
パッケージを SSIS デザイナで開いて実行しているときに、コンポーネントの実行時のメソッドもデバッグする場合は、DtsDebugHost.exe プロセスにもアタッチできるようにパッケージの実行を一時停止する必要があります。
dtexec.exe にアタッチしてオブジェクトの実行時のメソッドをデバッグするには
デバッグ構成でプロジェクトへの署名とビルドを行い、プロジェクトを配置し、このトピックで説明したようにグローバル アセンブリ キャッシュにインストールします。
[プロジェクトのプロパティ] の [デバッグ] タブで、[開始動作] として [外部プログラムの開始] を選択し、dtexec.exe を探します。これは、既定では C:\Program Files\Microsoft SQL Server\9.0\DTS\Binn にインストールされています。
[開始オプション] の [コマンド ライン オプション] テキスト ボックスに、コンポーネントを使用するパッケージを実行するために必要なコマンド ライン引数を入力します。多くの場合、コマンド ライン引数は /F[ILE} スイッチと、それに続く .dtsx ファイルのパスおよびファイル名で構成されます。詳細については、「dtexec ユーティリティ」を参照してください。
コンポーネントの実行時のメソッド内の適切な位置のソース コードに、ブレークポイントを設定します。
プロジェクトを実行します。
Business Intelligence Development Studio にアタッチしてカスタム オブジェクトのデザイン時のメソッドをデバッグするには
デバッグ構成でプロジェクトへの署名とビルドを行い、プロジェクトを配置し、このトピックで説明したようにグローバル アセンブリ キャッシュにインストールします。
カスタム オブジェクトのデザイン時のメソッド内の適切な位置のソース コードに、ブレークポイントを設定します。
Visual Studio の 2 番目のインスタンスを開き、カスタム オブジェクトを使用するパッケージが含まれている Integration Services プロジェクトを読み込みます。
Visual Studio の最初のインスタンスから、[デバッグ] メニューの [プロセスにアタッチ] をクリックして、パッケージが読み込まれる devenv.exe の 2 番目のインスタンスにアタッチします。
Visual Studio の 2 番目のインスタンスからパッケージを実行します。
Business Intelligence Development Studio にアタッチしてカスタム オブジェクトの実行時のメソッドをデバッグするには
上記の一覧にある手順を完了したら、DtsDebugHost.exe にアタッチできるようにパッケージの実行を一時停止します。ここで強制的に一時停止するには、ブレークポイントを OnPreExecute イベントに追加します。または、スクリプト タスクをプロジェクトに追加し、モーダル メッセージ ボックスを表示するスクリプトを入力します。
パッケージを実行します。実行が一時停止されたら、コンポーネント プロジェクトが開かれている Visual Studio のインスタンスに切り替え、[デバッグ] メニューの [プロセスにアタッチ] をクリックします。[x86] としてのみ一覧に表示されているインスタンスではなく、必ず、[型] 列で [マネージ, x86] として表示されている DtsDebugHost.exe のインスタンスにアタッチします。
一時停止したパッケージに戻り、ブレークポイント以降を続行します。または、[OK] をクリックしてスクリプト タスクが生成したメッセージ ボックスを破棄し、パッケージの実行とデバッグを続けます。
参照
概念
Integration Services 用のカスタム オブジェクトの開発
カスタム オブジェクトの永続化