91

最終的にパラメーターも渡したいSSISパッケージがあります。これらのパラメーターは.NETアプリケーション(VBまたはC#)から取得されるため、これを行う方法を誰かが知っているか、さらには役立つヒントのあるWebサイトを知りたいと思っていましたそれを行う方法について。

したがって、基本的には、.NET から SSIS パッケージを実行し、その中で使用できる SSIS パッケージ パラメーターを渡したいと考えています。

たとえば、SSIS パッケージは SQL データベースへのフラット ファイル インポートを使用しますが、ファイルのパスと名前は .Net アプリケーションから渡されるパラメータである可能性があります。

4

5 に答える 5

62

コードからパッケージに変数を設定する方法は次のとおりです-

using Microsoft.SqlServer.Dts.Runtime;

private void Execute_Package()
    {           
        string pkgLocation = @"c:\test.dtsx";

        Package pkg;
        Application app;
        DTSExecResult pkgResults;
        Variables vars;

        app = new Application();
        pkg = app.LoadPackage(pkgLocation, null);

        vars = pkg.Variables;
        vars["A_Variable"].Value = "Some value";               

        pkgResults = pkg.Execute(null, vars, null, null, null);

        if (pkgResults == DTSExecResult.Success)
            Console.WriteLine("Package ran successfully");
        else
            Console.WriteLine("Package failed");
    }
于 2009-12-17T07:40:21.133 に答える
7

@Craig Schwarzeの回答に追加するには、

関連する MSDN リンクを次に示します。

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

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

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

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();
    }
  }
}
于 2014-09-24T08:57:16.147 に答える