プログラムによるローカル パッケージの読み込みと実行
「パッケージの実行」で説明されている方法を使用して、Integration Services パッケージを必要に応じて実行したり、事前に定義した時刻に実行することができます。また、数行のコードを記述するだけで、Windows フォーム アプリケーション、コンソール アプリケーション、ASP.NET Web フォームや Web サービス、または Windows サービスなどのカスタム アプリケーションから、パッケージを実行することもできます。
このトピックの内容は次のとおりです。
プログラムによるパッケージの読み込み
プログラムによるパッケージの実行
このトピックでパッケージを読み込み、実行するために使用するすべてのメソッドには、Microsoft.SqlServer.ManagedDTS アセンブリへの参照が必要です。この参照を新しいプロジェクトに追加した後、using ステートメントまたは Imports ステートメントを使用して Microsoft.SqlServer.Dts.Runtime 名前空間をインポートします。
プログラムによるパッケージの読み込み
プログラムによってローカル コンピュータでパッケージを読み込むには、パッケージがローカルまたはリモートのどちらに保存されているかに関係なく、次のいずれかの方法を使用できます。
ストレージの場所 |
呼び出すメソッド |
---|---|
ファイル |
または |
SSIS パッケージ ストア |
|
SQL Server |
重要 |
---|
SSIS パッケージ ストアを操作するための Application クラスのメソッドは、"."、localhost、またはローカル サーバーのサーバー名のみをサポートします。"(local)" は使用できません。 |
プログラムによるパッケージの実行
ローカル コンピュータでマネージ コードを使用して、パッケージを実行するカスタム アプリケーションを開発するには、次の方法が必要です。ここにまとめた手順は、後のサンプル コンソール アプリケーションで示します。
プログラムによってローカル コンピュータでパッケージを実行するには
Visual Studio 開発環境を起動し、任意の開発言語で、新しいアプリケーションを作成します。この例ではコンソール アプリケーションを使用しますが、Windows フォーム アプリケーション、ASP.NET Web フォームや Web サービス、または Windows サービスからパッケージを実行することもできます。
[プロジェクト] メニューの [参照の追加] をクリックし、Microsoft.SqlServer.ManagedDTS.dll への参照を追加します。[OK] をクリックします。
Visual Basic の Imports ステートメント、または C# の using ステートメントを使用して、Microsoft.SqlServer.Dts.Runtime 名前空間をインポートします。
メイン ルーチンに次のコードを追加します。完成したコンソール アプリケーションは、たとえば次の例のようになります。
注意 このサンプル コードは、LoadPackage メソッドを使用してファイル システムからパッケージを読み込む方法を示していますが、LoadFromSqlServer メソッドを呼び出して MSDB データベースからパッケージを読み込んだり、LoadFromDtsServer メソッドを呼び出して Integration Services パッケージ ストアからパッケージを読み込むこともできます。
プロジェクトを実行します。このサンプル コードでは、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 クラスによってキャプチャできるイベントは他にも多数あります。
プログラムによってローカル コンピュータでパッケージを実行し、パッケージ イベントをキャプチャするには
上記の例の手順を実行し、この例のプロジェクトを作成します。
メイン ルーチンに次のコードを追加します。完成したコンソール アプリケーションは、たとえば次の例のようになります。
プロジェクトを実行します。このサンプル コードでは、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();
}
}
}
|