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

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

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

このトピックの内容:

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

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

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

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

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

保存先 呼び出すメソッド
ファイル 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();  
    }  
  }  
}  

参照

ローカル実行とリモート実行の相違点について
プログラムによるリモート パッケージの読み込みと実行
ローカル パッケージの出力の読み込み