カスタム オブジェクトのビルド、配置、およびデバッグ

適用対象:SQL Server Azure Data Factory の SSIS Integration Runtime

Integration Services 用カスタム オブジェクトのコードを記述したら、アセンブリをビルドして配置し、SSIS デザイナーに統合してパッケージで使用できるようにし、テストとデバッグを行う必要があります。

Integration Services 用カスタム オブジェクトのビルド、配置、およびデバッグ手順

オブジェクトのカスタム機能は既に記述しました。 次に、オブジェクトをテストし、ユーザーが使用できるようにする必要があります。 そのための手順は、Integration Services 用に作成できるカスタム オブジェクトのすべての種類でほぼ同じです。

ビルド、配置、およびテストの手順を以下に示します。

  1. 生成するアセンブリに厳密な名前で署名します。

  2. アセンブリをビルドします。

  3. 適切な Integration Services フォルダーに移動またはコピーすることにより、アセンブリを配置します。

  4. グローバル アセンブリ キャッシュ (GAC) にアセンブリをインストールします。

    オブジェクトは自動的にツールボックスに追加されます。

  5. 必要に応じて、配置のトラブルシューティングを行います。

  6. コードのテストとデバッグを行います。

SQL Server Data Tools (SSDT) で SSIS デザイナーを使用して、SQL Server のさまざまなバージョンをターゲットとするパッケージを作成、管理、および実行できるようになりました。 この機能強化がカスタム拡張機能に与える影響に関する詳細については、「Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016」 (SSIS のカスタム拡張機能を SSDT 2015 for SQL Server 2016 用 SSDT 2015 の複数バージョン サポートでサポートされるようにする) を参照してください。

アセンブリへの署名

アセンブリを共有することを目的としている場合は、アセンブリをグローバル アセンブリ キャッシュにインストールする必要があります。 グローバル アセンブリ キャッシュに追加されたアセンブリは、SQL Server Data Tools (SSDT) などのアプリケーションで使用できるようになります。 グローバル アセンブリ キャッシュの要件として、アセンブリに厳密な名前で署名する必要があります。これにより、アセンブリがグローバルに一意であることが保証されます。 厳密な名前が付けられたアセンブリは、アセンブリの名前、カルチャ、公開キー、およびバージョン番号を含む完全修飾名を持ちます。 ランタイムはこの情報を使用して、アセンブリを検索し、同じ名前の他のアセンブリと区別します。

アセンブリに厳密な名前で署名するには、公開キーと秘密キーのペアを保持しているか、または作成する必要があります。 この暗号化用の公開キーと秘密キーのペアがビルド時に使用され、厳密な名前のアセンブリが作成されます。

厳密な名前と、アセンブリへの署名に必要な手順の詳細については、.NET Framework SDK のドキュメントの次のトピックを参照してください。

  • 厳密な名前付きアセンブリ

  • キー ペアの作成

  • 厳密な名前でのアセンブリへの署名

アセンブリには、Visual Studio でビルド時に厳密な名前を使用して簡単に署名できます。 [プロジェクトのプロパティ] ダイアログ ボックスで、 [署名] タブをクリックします。 [アセンブリの署名] を選択し、キー (.snk) ファイルのパスを指定します。

アセンブリのビルド

プロジェクトに署名したら、SQL Server Data Tools の [ビルド] メニューで使用可能なコマンドを使用して、プロジェクトまたはソリューションを、ビルドまたはリビルドする必要があります。 ソリューションには、カスタム ユーザー インターフェイス用の独立したプロジェクトが含まれている場合があります。このプロジェクトにも厳密な名前で署名する必要があり、同時にビルドすることが可能です。

アセンブリの配置とグローバル アセンブリ キャッシュへのインストールを実行するための最も便利な方法は、これらの手順を Visual Studio でビルド後のイベントとしてスクリプト処理することです。 ビルド イベントは、Visual Basic プロジェクトのプロジェクト プロパティの [コンパイル] ページ、および C# プロジェクトの [ビルド イベント] ページから使用できます。 gacutil.exe などのコマンド プロンプト ユーティリティは、完全なパスで指定する必要があります。 スペースを含むパスと、スペースを含むパスに展開される $(TargetPath) などのマクロは、引用符で囲む必要があります。

カスタム ログ プロバイダーのビルド後に実行するコマンド ラインの例を次に示します。

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)  
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)  
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "  

アセンブリの配置

SSIS デザイナーは、SQL Server Integration Services のインストール時に作成される一連のフォルダー内で検索されたファイルを列挙することにより、パッケージで使用できるカスタム オブジェクトを検索します。 既定の SQL Server インストール設定を使用した場合、この一連のフォルダーは C:\Program Files\Microsoft SQL Server\130\DTS の下にあります。 ただし、カスタム オブジェクトのセットアップ プログラムを作成する場合は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath レジストリ キーの値をチェックしてこのフォルダーの場所を確認してください。

Note

SQL Server Data Tools の複数バージョンのサポートでうまく機能するカスタム コンポーネントを配置する方法の詳細については、「Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016」 (SSIS のカスタム拡張機能を SSDT 2015 for SQL Server 2016 用 SSDT 2015 の複数バージョン サポートでサポートされるようにする) を参照してください。

アセンブリをフォルダーに配置する方法は 2 つあります。

  • コンパイル済みのアセンブリをビルド後に適切なフォルダーに移動またはコピーします (ビルド後のイベントにコピー コマンドを含めると便利です)。

  • 適切なフォルダーでアセンブリを直接ビルドします。

C:\Program Files\Microsoft SQL Server\130\DTS にある次の配置フォルダーは、さまざまな種類のカスタム オブジェクトに使用されます。

カスタム オブジェクト デプロイ フォルダー
タスク タスク
[ODBC 入力元エディター] 接続
ログ プロバイダー LogProviders
カスタム データ フロー コンポーネント PipelineComponents

Note

アセンブリは、使用可能なタスクや接続マネージャーなどの列挙をサポートするために、これらのフォルダーにコピーされます。 したがって、カスタム オブジェクトのカスタム ユーザー インターフェイスのみを含むアセンブリをこれらのフォルダーに配置する必要はありません。

グローバル アセンブリ キャッシュへのアセンブリのインストール

タスク アセンブリをグローバル アセンブリ キャッシュ (GAC) にインストールするには、コマンド ライン ツール gacutil.exe を使用するか、アセンブリを %system%\assembly ディレクトリにドラッグします。 便宜上、gacutil.exe への呼び出しもビルド後のイベントに含めることができます。

次のコマンドでは、gacutil.exe を使用して MyTask.dll という名前のコンポーネントを GAC にインストールします。

gacutil /iF MyTask.dll

カスタム オブジェクトの新しいバージョンをインストールしたら、SSIS デザイナーを閉じて再度開く必要があります。 グローバル アセンブリ キャッシュに以前のバージョンのカスタム オブジェクトをインストールしている場合は、新しいバージョンをインストールする前に以前のバージョンを削除する必要があります。 アセンブリをアンインストールするには、gacutil.exe を実行し、/u オプションを使用してアセンブリ名を指定します。

グローバル アセンブリ キャッシュの詳細については、.NET Framework ツールのグローバル アセンブリ キャッシュ ツール (Gactutil.exe) を参照してください。

配置のトラブルシューティング

カスタム オブジェクトが [ツールボックス] または使用可能なオブジェクトの一覧に表示されるのに、パッケージに追加できない場合は、次の操作を試してください。

  1. グローバル アセンブリ キャッシュにコンポーネントの複数のバージョンがないか検索します。 グローバル アセンブリ キャッシュにコンポーネントの複数のバージョンがある場合、デザイナーはコンポーネントを読み込めないことがあります。 アセンブリのすべてのインスタンスをグローバル アセンブリ キャッシュから削除し、アセンブリを再度追加してください。

  2. 配置フォルダーに存在するアセンブリのインスタンスが 1 つだけであることを確認します。

  3. ツールボックスを更新します。

  4. Visual Studio を devenv.exe にアタッチし、ブレークポイントを設定して初期化コードを実行し、例外が発生しないことを確認します。

コードのテストとデバッグ

カスタム オブジェクトの実行時のメソッドをデバッグするための最も簡単な方法は、カスタム オブジェクトのビルド後に Visual Studio から dtexec.exe を起動し、コンポーネントを使用するパッケージを実行することです。

Validate メソッドなど、コンポーネントのデザイン時のメソッドをデバッグする場合は、コンポーネントを使用するパッケージを Visual Studio の 2 番目のインスタンスで開き、devenv.exe プロセスにアタッチします。

パッケージを SSIS デザイナーで開いて実行しているときに、コンポーネントの実行時のメソッドもデバッグする場合は、DtsDebugHost.exe プロセスにもアタッチできるようにパッケージの実行を一時停止する必要があります。

dtexec.exe にアタッチしてオブジェクトの実行時のメソッドをデバッグするには

  1. デバッグ構成でプロジェクトへの署名とビルドを行い、プロジェクトを配置し、このトピックで説明したようにグローバル アセンブリ キャッシュにインストールします。

  2. [プロジェクトのプロパティ][デバッグ] タブで、[開始動作] として [外部プログラムの開始] を選択し、dtexec.exe を探します。これは、既定では C:\Program Files\Microsoft SQL Server\130\DTS\Binn にインストールされています。

  3. [開始オプション][コマンド ライン オプション] テキスト ボックスに、コンポーネントを使用するパッケージを実行するために必要なコマンド ライン引数を入力します。 多くの場合、コマンド ライン引数は /F[ILE] スイッチと、それに続く .dtsx ファイルのパスおよびファイル名で構成されます。 詳細については、「dtexec ユーティリティ」を参照してください。

  4. コンポーネントの実行時のメソッド内の適切な位置のソース コードに、ブレークポイントを設定します。

  5. プロジェクトを実行します。

SQL Server データ ツールにアタッチしてカスタム オブジェクトのデザイン時のメソッドをデバッグするには

  1. デバッグ構成でプロジェクトへの署名とビルドを行い、プロジェクトを配置し、このトピックで説明したようにグローバル アセンブリ キャッシュにインストールします。

  2. カスタム オブジェクトのデザイン時のメソッド内の適切な位置のソース コードに、ブレークポイントを設定します。

  3. Visual Studio の 2 番目のインスタンスを開き、カスタム オブジェクトを使用するパッケージが含まれている Integration Services プロジェクトを読み込みます。

  4. Visual Studio の最初のインスタンスから、[デバッグ] メニューの [プロセスにアタッチ] をクリックして、パッケージが読み込まれる devenv.exe の 2 番目のインスタンスにアタッチします。

  5. Visual Studio の 2 番目のインスタンスからパッケージを実行します。

SQL Server データ ツールにアタッチしてカスタム オブジェクトの実行時のメソッドをデバッグするには

  1. 上記の一覧にある手順を完了したら、DtsDebugHost.exe にアタッチできるようにパッケージの実行を一時停止します。 ここで強制的に一時停止するには、ブレークポイントを OnPreExecute イベントに追加します。または、スクリプト タスクをプロジェクトに追加し、モーダル メッセージ ボックスを表示するスクリプトを入力します。

  2. パッケージを実行します。 実行が一時停止されたら、コンポーネント プロジェクトが開かれている Visual Studio のインスタンスに切り替え、[デバッグ] メニューの [プロセスにアタッチ] をクリックします。 [x86] としてのみ一覧に表示されているインスタンスではなく、必ず、[型] 列で [マネージド, x86] として表示されている DtsDebugHost.exe のインスタンスにアタッチします。

  3. 一時停止したパッケージに戻り、ブレークポイント以降を続行します。または、[OK] をクリックしてスクリプト タスクが生成したメッセージ ボックスを破棄し、パッケージの実行とデバッグを続けます。

参照

Integration Services 用のカスタム オブジェクトの開発
カスタム オブジェクトの永続化
パッケージ開発のトラブルシューティング ツール