我想知道如何从第二个任务(而不是第一个任务)执行包。
整个包通过简单的dts代码正确运行:
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
pkgLocation = "<packagepath>\CalculatedColumns.dtsx";
app = new Application();
pkg = app.LoadPackage(pkgLocation, null);
pkgResults = pkg.Execute();
它只是帮助完整的程序包执行,但与特定的任务执行无关。
感谢。
答案 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.依此类推,可能要跳过/开始所有可能的步骤。如果有很多,它可能会变得非常混乱,但这是你想要对包裹执行进行那种控制所付出的代价。