如何使用c#从ssis包执行特定任务?

时间:2016-07-24 11:14:40

标签: c# ssis package task

我想知道如何从第二个任务(而不是第一个任务)执行包。

整个包通过简单的dts代码正确运行:

string pkgLocation;
        Package pkg;
        Application app;
        DTSExecResult pkgResults;

        pkgLocation = "<packagepath>\CalculatedColumns.dtsx";
        app = new Application();
        pkg = app.LoadPackage(pkgLocation, null);
        pkgResults = pkg.Execute();

它只是帮助完整的程序包执行,但与特定的任务执行无关。

感谢。

2 个答案:

答案 0 :(得分:0)

嗯,SSIS包整体执行。因此,您无法控制天气从第1,第2或第3任务启动它。 但是 - 您可以动态禁用第一个任务,以便从第二个任务开始。所以 - 按照Executing SSIS task from C# application question

中的描述设置第一个任务的禁用属性

答案 1 :(得分:0)

我们通过使用Precedence Constraints和一个在执行时传递给包的包变量来实现这一点。

例如,将一个名为@Step的变量添加到包中,当您执行包时,如果要从第二个任务开始,跳过第一个任务,则将值2传递给@Step变量。

然后在你的包中以一个没有做任何事情的虚拟脚本任务开始。把它想象成&#34;步骤0&#34;。在步骤0到步骤1的优先约束中,检查@Step的值。如果不是1,那么请不要进入第1步。

从步骤0到步骤2有另一个优先约束,并在那里执行相同的操作,检查@Step的值2.依此类推,可能要跳过/开始所有可能的步骤。如果有很多,它可能会变得非常混乱,但这是你想要对包裹执行进行那种控制所付出的代价。