2013年3月20日水曜日

◆パッケージの配置

Integration Services サーバーとは
Integration Services サーバーとは

作成した SSIS パッケージは、「Integration Services サーバー」へ配置することで、パッケージをサーバーで管理したり、実行したりできるようになります。
Integration Services サーバーは、SQL Server 2012 のインストール時に、次のように[Integration Services]を選択したサーバーです。

image

[Integration Services]をインストールすると、「SQL Server Integration Services 11.0」という名前サービスが追加されて、自動実行されます。これは、「SQL Server 構成マネージャー」ツールで次のように確認できます。

image

パラメーター化機能
パラメーター化機能(サーバー名とパスのパラメーター化)

Integration Services サーバーへの配置を行う前に、作成したプロジェクトを、本番機など別のマシンへ配置する際に便利な「パラメーター化」機能を利用する手順を説明します。開発機と本番機では、接続する SQL Server の名前が違ったり、ファイルの配置してあるパスが違ったりするので、そういった場合にパラメーター化機能を利用すると大変便利です。

  1. まずは、データの転送先となる SQL Server の名前のパラメーター化を行ってみましょう。接続する SQL Server の名前をパラメーター化するには、次のように[接続マネージャー]の「サーバー名.ssisdb3」を右クリックして、[パラメーター化]をクリックします。
    image
    Note: パラメーター化は SQL Server 2012 からの新機能
    パラメーター化は、SQL Server 2012 から提供された新機能です。SQL Server 2008 R2 以前のバージョンを利用している場合は、「パッケージ構成ファイル」(.dtsConfig)という機能を利用することで、パラメーター化と同じようなことを実現することができます。
  2. [パラメーター化]をクリックすると、次のように[パラメーター化]ダイアログが表示されるので、次のように[プロパティ]で「ServerName」を選択します。
    image
    [新しいパラメーターを作成する]が選択されていることを確認して、[名前]へ任意のパラメーター名(既定値は サーバー名Ssisdb3_ServerName)を入力し、[OK]ボタンをクリックします。
  3. [パラメーター]タブを開くと、作成したパラメーターが表示されていることを確認できます。
    (リアルタイムには表示されなかったりするようだ。VS再起動で表示される)
    image
    これで、データ転送先となる SQL Server の名前のパラメーター化が完了です。
  4. 次に、Foreach ループ コンテナーで指定した読み取り対象のフォルダーをパラメーター化してみます。次のように、[パラメーター]タブで、[新規作成]ボタンをクリックします。
    image
  5. これにより、新しくパラメーターが作成されるので、次のように[名前]へ任意のパラメーター名(画面は importPath)を入力して、[データ型]へは「String」を選択し、既定値となる[値]へはサンプル スクリプトの import フォルダーへのパスを入力します。
    image
  6. 続いて、[制御フロー]タブを開いて、[Foreach ループ コンテナー]をダブル クリックもしくは右クリックして[編集]を選択します。
    image
  7. [Foreach ループ エディター]ダイアログが開いたら、[コレクション]ページを開いて[Expressions]プロパティの[...]ボタンをクリックします。
    image
    [プロパティ式エディター]ダイアログで[Directory]プロパティを選択して[...]ボタンをクリックします。
  8. [式ビルダー]ダイアログが開いたら、[変数とパラメーター]フォルダーを展開して表示されるパラメーターの一覧の中から、前の手順で作成した「$Package::importPath」パラメーターを[式]へドラッグ&ドロップします。
    image
  9. [プロパティ式エディター]ダイアログへ戻ったら、式が設定されていることを確認して、[OK]ボタンをクリックします。
    [Foreach ループ エディター]ダイアログへ戻ったら、[OK]ボタンをクリックします。
    これで、Foreach ループ コンテナーの読み取り対象のフォルダーのパラメーター化が完了です。
SSISDB カタログの作成
SSIDB カタログの作成

Integration Services サーバーへパッケージを配置するには、事前に「SSIDB カタログ」(SSISDB データベース)を作成しておく必要があります。

  1. SSIDB カタログを作成するには、Integration Services サーバー上で Management Studio を起動して、[オブジェクト エクスプローラー]の[統合サービス カタログ]フォルダーを右クリックし、[カタログの作成]をクリックします。
    image
  2. [カタログの作成]ダイアログが表示されたら、[CLR 統合を有効にする]をチェックして、[パスワード]と[パスワードの再入力]へ暗号化のための任意のパスワードを入力して、[OK]ボタンをクリックします。
    image
    これにより、SSISDB カタログが作成されます(SSISDB という名前のシステム データベースが自動作成されます)。
SSIS パッケージ格納用のフォルダーの作成

次に、SSIS パッケージを格納するためのフォルダーを、SSISDB カタログ内に作成します。

  1. フォルダーを作成するには、次のように[統合サービス カタログ]を展開して、[SSISDB カタログ]を右クリックし、[フォルダーの作成]をクリックします。
    image
  2. [フォルダーの作成]ダイアログが表示されたら、[フォルダー名]へ任意のフォルダー名(画面は test)を入力して、[OK]ボタンをクリックします。
    image
Integration Services サーバーへのパッケージの配置
Integration Services サーバーへのパッケージの配置

次に、SSIS パッケージを Integration Services サーバーへ配置します。配置には、SQL Server Data Tools を利用します。

  1. SQL Server Data Tools でプロジェクト(SSISoyo2)を開き、次のように[ソリューション エクスプローラー]で、[プロジェクト名](SSISoyo2)を右クリックして、[配置]をクリックします。
    image
  2. これにより、[Integration Services 配置ウィザード]が起動するので、[次へ]ボタンをクリックします。
  3. 次の[ソースの選択]ページでは、[プロジェクト配置ファイル]が選択されていることを確認して、[次へ]ボタンをクリックします。
    image
  4. 次の[配置先の選択]ページでは、[サーバー名]へ配置先のサーバー名(Integration Services サーバーの名前)を入力します。
    image
    続いて、[パス]の[参照]ボタンをクリックして、[フォルダーまたはプロジェクトの参照]ダイアログで、プロジェクトの配置先となるフォルダーとして、前の手順で作成したフォルダー(今回は、test)を選択して、[OK]ボタンをクリックします。
  5. [配置先の選択]ページへ戻ったら、[次へ]ボタンをクリックします。
  6. 次の[確認]ページでは、これまで設定してきた内容が表示されます。確認後、[配置]ボタンをクリックして、配置を実行します。
  7. [結果]ページでは、配置が完了し、すべての[Result]が「成功」になったことを確認して、[閉じる]ボタンをクリックします。
    image
    これで、サーバーへの配置が完了です。
配置したパッケージの確認
  1. 配置したパッケージを確認するには、Management Studio のオブジェクト エクスプローラーで SSISDB カタログを展開して、「test」フォルダーを展開します。
    image
    「プロジェクト」フォルダー内に SSISoyo2 プロジェクトが配置され、「パッケージ」フォルダーには、パッケージ(Package.dtsx)が表示されていることを確認できます。
Management Studio からの実行

パッケージが正しく配置されたことを確認するため、Management Studio から実行してみましょう。

  1. データの転送の結果を確認しやすくするために、まずは、次のように Management Studio のクエリ エディターから「ssisdb3」データベースの「ABC」テーブルに対して、TRUNCATE TABLE ステートメントを実行して、全行を削除しておきます。
  2. 次に、オブジェクト エクスプローラーで[SSISDB カタログ]内の SSISoyo2 プロジェクトを展開して、パッケージ名(Package.dtsx)を右クリックし、[実行]をクリックします。
    image
    [パッケージ実行]ダイアログが表示されたら、[OK]ボタンをクリックします。これにより、パッケージが実行されます。
  3. 実行後、「概要レポートを今すぐ開きますか?」というメッセージが表示されるので、[はい]ボタンをクリックします。
    image
  4. これによって、実行したパッケージの概要レポートを表示することができます。
    image
    [状態]が「成功」になっていれば、実行が成功です。
  5. 転送されたデータを確認するために、オブジェクト エクスプローラーで[ABC]テーブルを右クリックして、[上位 1000 行の選択]をクリックします。
    image
別マシンへのパッケージの配置
別マシンへのパッケージの配置

次に、Management Studio を利用して、パッケージを別のマシンへ配置します。ここからの手順は別のマシンが必要になりますが、同一マシンで試している方は、別マシンの部分を同一マシンへ置き換えて読み進めてください。また、同一マシンで試している場合は、手順 2~5の作業を省略してください。

  1. まずは、パッケージが利用するサンプル スクリプト内の「import」フォルダー(Foreach ループ コンテナーの読み取り対象のフォルダー)配下のファイルをすべて、別マシン上の任意のフォルダー(C:\import2 など)へコピーします。
    image
  2. 次に、ファイルの転送先となるデータベース(ssisdb3)とテーブル(ABC)を別マシン上で作成しておきます。Management Studio のクエリ エディターを開いて、次のようにステートメントを記述し、実行しておきます。
    image
    なお、この手順は、同一マシンで試している場合は、省略してください。
  3. 次に、配置先となる別マシン上にも SSISDB カタログを作成します。Management Studio の[オブジェクト エクスプローラー]で、配置先マシンの[統合サービス カタログ]フォルダーを右クリックして、[カタログの作成]をクリックします。
    [カタログの作成]ダイアログが開いたら、[CLR 統合を有効にする]をチェックして、[パスワード]と[パスワードの再入力]へ暗号化のためのパスワードを入力し、[OK]ボタンをクリックします。
    これにより、配置先の別マシンにも SSISDB カタログが作成されます。
  4. 次に、[統合サービス カタログ]展開して、SSISDB カタログを右クリックし、[フォルダーの作成]をクリックします。
    image
    [フォルダーの作成]ダイアログが表示されたら、[フォルダー名]へ任意のフォルダー名を入力して(画面は test2)、[OK]ボタンをクリックします。
  5. これで、配置先の別マシン(画面は SERVER1)にもパッケージを配置するためのフォルダーを作成することができました。
    image
  6. 次に、Management Studio のオブジェクト エクスプローラーで、元のマシンに配置してあるパッケージの[プロジェクト]フォルダーを右クリックして、[プロジェクトの配置]をクリックします。
    image
    これにより、[Integration Services 配置ウィザード]が起動します。
  7. 次の[ソースの選択]ページでは、配布対象となるパッケージの場所を指定します。ここでは、[Integration Services カタログ]をチェックして、[サーバー名]へパッケージが配置されているサーバーの名前(画面は moon)を入力し、[パス]で[参照]ボタンをクリックします。
    image
    [プロジェクトの参照]ダイアログが表示されたら、test フォルダーの SSISoyo2 プロジェクトを選択して、[OK]ボタンをクリックします。
    [ソースの選択]ページへ戻ったら、[次へ]ボタンをクリックします。
  8. 次の[配置先の選択]ページでは、配置先となるサーバー名とフォルダーを指定します。
    image
    [サーバー名]へ配置先となる別マシン名(画面は SERVER1)を入力して、[パス]の[参照]ボタンをクリックし、作成したフォルダー名(画面は test2)を指定して、[次へ]ボタンをクリックします。
  9. 次の[確認]ページでは、これまで設定してきた内容を確認して、[配置]ボタンをクリックし、配置を実行します。
    image
  10. 次の[結果]ページでは、すべての[Result]が「成功」となっていることを確認して[閉じる]ボタンをクリックします。
    image
  11. 次に、オブジェクト エクスプローラーで、配置先のマシンの[SSISDB カタログ]内の[test2]フォルダーを右クリックして、[最新の情報に更新]をクリックし、test2 フォルダー内に SSISoyo2 プロジェクトが配置されていることを確認します。
    image
  12. 次に、新しく配置した「SSISoyo2」プロジェクト内の「Package.dtsx」を右クリックして、[構成]をクリックし、構成の編集(パラメーター値の編集)を行います。
    image
  13. [構成]ダイアログが表示されたら、「サーバー名Ssidb3_ServerName」パラメーターの[...]ボタンをクリックします。
    image
  14. [パラメーター値の設定]ダイアログが表示されたら、[値]で[値を編集する]を選択して、別マシンのサーバー名(画面は SERVER1)を入力し、[OK]ボタンをクリックします。
    image
  15. 次に、[構成]ダイアログへ戻ったら、「importPath」パラメーターの[...]ボタンをクリックします。
    image
  16. [パラメーター値の設定]ダイアログが表示されたら、[値]で[値を編集する]を選択して、「import」フォルダーをコピーしたローカル パス(画面はC:\import2)へ変更し、[OK]ボタンをクリックします。
    image
  17. [構成]ダイアログへ戻ったら、[OK]ボタンをクリックして閉じます。
  18. 最後に、パッケージが正しく実行できるかどうかを試してみましょう。
    オブジェクト エクスプローラーで、別マシン(画面は SERVER1)へ配置した SSISoyo2 プロジェクト内の Package.dtsx パッケージを右クリックして、[実行]をクリックします。
    image
  19. [パッケージの実行]ダイアログが表示されたら、パラメーターの値が、前の手順で編集した値へ変更されていることを確認して、[OK]ボタンをクリックします。
    image
    これにより、パッケージが実行されます。
  20. 実行後、「概要レポートを今すぐ開きますか?」メッセージが表示されたら、[はい]ボタンをクリックします。
    image
  21. これにより、パッケージの概要レポートが表示されて、実行状態が「成功」であることを確認できれば、実行が成功です。
    image
  22. 完了後、Management Studio から「ssisdb3」データベースの「ABC」テーブルを開き、データが追加されていることを確認しておきます。
    image
    以上で、パッケージを別マシンへ配置する手順が完了です。このように、パラメーター化機能を利用することで、開発機と本番機でマシン構成が異なる場合でも容易に構成を変更でき、パッケージを実行できるようになるので、大変便利です。

0 件のコメント:

コメントを投稿