次の方法で共有


ローカル コンピューターでのプログラムによる SSIS パッケージの実行

数行のマネージ コードを用意してローカル コンピューターに関する適切な前提条件を満たすだけで、カスタム アプリケーションからパッケージを実行することができます。カスタム アプリケーションとしては、Windows フォーム アプリケーション、コンソール アプリケーション、ASP.NET Web フォームや Web サービス、または Windows サービスがあります。

注意

Integration Services パッケージを必要に応じて実行したり、事前に定義した時刻に実行したりする場合は、トピック「パッケージの実行」で説明されているメソッドを使用します。

このトピックのセクション

  • ローカル コンピューターの前提条件

  • パッケージをローカル コンピューターに読み込んで実行するアプリケーションの作成

    • パッケージを読み込むメソッド

    • パッケージを実行するメソッド

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

ローカル コンピューターの前提条件

パッケージは、パッケージを起動するアプリケーションと同じコンピューターで実行されます。したがって、アプリケーションが、別のコンピューター上にリモートに格納されたパッケージを読み込むと、そのパッケージはローカル コンピューターで実行されます。

その結果、ローカル コンピューターにパッケージを読み込んで実行するためには、いくつかの前提条件を満たす必要があります。

  • パッケージの外部にあるリソースへの参照がパッケージに含まれる場合、これらの参照は、ローカル コンピューター上で有効な参照であることが必要です。このような参照としては、接続文字列、サーバー、ファイル、メッセージ キューなどがあります。

    注意

    パッケージの外部にあるリソースへの有効な参照がローカル コンピューターに存在しない場合、パッケージをローカル コンピューター上で実行することはできません。その代わり、パッケージをリモート コンピュター上で確実に実行できるようにする必要があります。詳細については、「リモート コンピューターでのプログラムによる SSIS パッケージの実行」を参照してください。

  • ユーザーは、ローカル コンピューター上にあるデータ ソースやその他のリソースにパッケージがアクセスする際に必要となる権限をすべて保持している必要があります。

  • パッケージを開発環境 Business Intelligence Development Studio の外部で実行することができるのは、そのコンピューターに Integration Services がインストールされている場合のみです。

    注意

    SQL Server ライセンス供与の条件によっては、Integration Services を追加のコンピューターにインストールできないことがあります (Integration Services はサーバー コンポーネントであるため、クライアントおよびローカル コンピューターに再配布できません)。Integration Services が、ローカル コンピューターにインストールされておらず、またインストールできない場合には、パッケージをリモート コンピューター上で確実に実行できるようにする必要があります。詳細については、「リモート コンピューターでのプログラムによる SSIS パッケージの実行」を参照してください。

SSIS パッケージをローカル コンピューターに読み込んで実行するアプリケーションの作成

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

SSIS パッケージを読み込むメソッド

プログラムによってパッケージをローカル コンピューターに読み込むには、パッケージがローカルとリモートのどちらに保存されているかに関係なく、次の表に示したいずれかのメソッドを呼び出します。これらのメソッドはいずれも Package オブジェクトを返します。これを使用して、パッケージを実行したりパッケージのプロパティを調べたりすることができます。

ストレージの場所

呼び出すメソッド

ファイル

LoadPackage

- または -

LoadPackage

SSIS パッケージ ストア

LoadFromDtsServer

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

SQL Server

LoadFromSqlServer

SSIS パッケージを実行するメソッド

ローカル コンピューターでパッケージをプログラムによって実行するには、前のセクションで説明した方法でパッケージを読み込んでから、パッケージの Execute メソッドを呼び出します。

次の手順を使用して、ローカル コンピューターにパッケージを読み込んで実行するマネージ コードのカスタム アプリケーションを開発します。この手順の後に、この手順での各ステップを具体的に表すサンプル コンソール アプリケーションを示します。

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

  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();
    }
  }
}

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

前のセクションのサンプルで示したようにプログラムを使用してパッケージを実行するときに、パッケージの実行時に発生するエラーやその他のイベントをキャプチャすることが必要になる場合もあります。イベントのキャプチャは、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 の Integration Services のページを参照してください。


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