次の方法で共有


プログラムによるローカル パッケージの読み込みと実行

パッケージの実行」で説明されている方法を使用して、Integration Services パッケージを必要に応じて実行したり、事前に定義した時刻に実行することができます。また、数行のコードを記述するだけで、Windows フォーム アプリケーション、コンソール アプリケーション、ASP.NET Web フォームや Web サービス、または Windows サービスなどのカスタム アプリケーションから、パッケージを実行することもできます。

このトピックの内容は次のとおりです。

  • プログラムによるパッケージの読み込み

  • プログラムによるパッケージの実行

このトピックでパッケージを読み込み、実行するために使用するすべてのメソッドには、Microsoft.SqlServer.ManagedDTS アセンブリへの参照が必要です。この参照を新しいプロジェクトに追加した後、using ステートメントまたは Imports ステートメントを使用して Microsoft.SqlServer.Dts.Runtime 名前空間をインポートします。

プログラムによるパッケージの読み込み

プログラムによってローカル コンピュータでパッケージを読み込むには、パッケージがローカルまたはリモートのどちらに保存されているかに関係なく、次のいずれかの方法を使用できます。

ストレージの場所

呼び出すメソッド

ファイル

LoadPackage

または

LoadPackage

SSIS パッケージ ストア

LoadFromDtsServer

SQL Server

LoadFromSqlServer

重要な注意事項重要

SSIS パッケージ ストアを操作するための Application クラスのメソッドは、"."、localhost、またはローカル サーバーのサーバー名のみをサポートします。"(local)" は使用できません。

プログラムによるパッケージの実行

ローカル コンピュータでマネージ コードを使用して、パッケージを実行するカスタム アプリケーションを開発するには、次の方法が必要です。ここにまとめた手順は、後のサンプル コンソール アプリケーションで示します。

プログラムによってローカル コンピュータでパッケージを実行するには

  1. Visual Studio 開発環境を起動し、任意の開発言語で、新しいアプリケーションを作成します。この例ではコンソール アプリケーションを使用しますが、Windows フォーム アプリケーション、ASP.NET Web フォームや Web サービス、または Windows サービスからパッケージを実行することもできます。

  2. [プロジェクト] メニューの [参照の追加] をクリックし、Microsoft.SqlServer.ManagedDTS.dll への参照を追加します。[OK] をクリックします。

  3. Visual Basic の Imports ステートメント、または C# の using ステートメントを使用して、Microsoft.SqlServer.Dts.Runtime 名前空間をインポートします。

  4. メイン ルーチンに次のコードを追加します。完成したコンソール アプリケーションは、たとえば次の例のようになります。

    注意注意

    このサンプル コードは、LoadPackage メソッドを使用してファイル システムからパッケージを読み込む方法を示していますが、LoadFromSqlServer メソッドを呼び出して MSDB データベースからパッケージを読み込んだり、LoadFromDtsServer メソッドを呼び出して Integration Services パッケージ ストアからパッケージを読み込むこともできます。

  5. プロジェクトを実行します。このサンプル コードでは、SQL Server のサンプルと共にインストールされている CalculatedColumns サンプル パッケージを実行します。パッケージの実行結果がコンソール ウィンドウに表示されます。

サンプル コード

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim pkgLocation As String
    Dim pkg As New Package
    Dim app As New Application
    Dim pkgResults As DTSExecResult

    pkgLocation = _
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"
    pkg = app.LoadPackage(pkgLocation, Nothing)
    pkgResults = pkg.Execute()

    Console.WriteLine(pkgResults.ToString())
    Console.ReadKey()

  End Sub

End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace RunFromClientAppCS
{
  class Program
  {
    static void Main(string[] args)
    {
      string pkgLocation;
      Package pkg;
      Application app;
      DTSExecResult pkgResults;

      pkgLocation =
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
      app = new Application();
      pkg = app.LoadPackage(pkgLocation, null);
      pkgResults = pkg.Execute();

      Console.WriteLine(pkgResults.ToString());
      Console.ReadKey();
    }
  }
}

実行中のパッケージからのイベントのキャプチャ

上記のサンプルのようにプログラムを使用してパッケージを実行するときは、パッケージの実行時に発生するエラーやその他のイベントをキャプチャすることが必要な場合もあります。イベントのキャプチャは、DefaultEvents クラスから継承するクラスを追加し、パッケージを読み込むときにそのクラスへの参照を渡すことによって行うことができます。次の例では OnError イベントのみがキャプチャされますが、DefaultEvents クラスによってキャプチャできるイベントは他にも多数あります。

プログラムによってローカル コンピュータでパッケージを実行し、パッケージ イベントをキャプチャするには

  1. 上記の例の手順を実行し、この例のプロジェクトを作成します。

  2. メイン ルーチンに次のコードを追加します。完成したコンソール アプリケーションは、たとえば次の例のようになります。

  3. プロジェクトを実行します。このサンプル コードでは、SQL Server のサンプルと共にインストールされている CalculatedColumns サンプル パッケージを実行します。パッケージ実行結果は、発生したエラーと共にコンソール ウィンドウに表示されます。

サンプル コード

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim pkgLocation As String
    Dim pkg As New Package
    Dim app As New Application
    Dim pkgResults As DTSExecResult

    Dim eventListener As New EventListener()

    pkgLocation = _
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"
    pkg = app.LoadPackage(pkgLocation, eventListener)
    pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)

    Console.WriteLine(pkgResults.ToString())
    Console.ReadKey()

  End Sub

End Module

Class EventListener
  Inherits DefaultEvents

  Public Overrides Function OnError(ByVal source As Microsoft.SqlServer.Dts.Runtime.DtsObject, _
    ByVal errorCode As Integer, ByVal subComponent As String, ByVal description As String, _
    ByVal helpFile As String, ByVal helpContext As Integer, _
    ByVal idofInterfaceWithError As String) As Boolean

    ' Add application–specific diagnostics here.
    Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description)
    Return False

  End Function

End Class
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace RunFromClientAppWithEventsCS
{
  class MyEventListener : DefaultEvents
  {
    public override bool OnError(DtsObject source, int errorCode, string subComponent, 
      string description, string helpFile, int helpContext, string idofInterfaceWithError)
    {
      // Add application-specific diagnostics here.
      Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);
      return false;
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      string pkgLocation;
      Package pkg;
      Application app;
      DTSExecResult pkgResults;

      MyEventListener eventListener = new MyEventListener();

      pkgLocation =
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
      app = new Application();
      pkg = app.LoadPackage(pkgLocation, eventListener);
      pkgResults = pkg.Execute(null, null, eventListener, null, null);

      Console.WriteLine(pkgResults.ToString());
      Console.ReadKey();
    }
  }
}
Integration Services のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを購読します。