【发布时间】:2014-10-30 15:42:24
【问题描述】:
我正在尝试从脚本任务中停止包执行。根据MSDN Article: RunningPackage RunningPackage.Stop(); 应该可以工作,但我收到错误 “非静态字段、方法或属性 Microsoft.SqlServer.Dts.Runtime.RunningPackage.Stop() 需要对象引用” 这样:
public void Main()
{
RunningPackage.Stop(); // Object reference error.
}
所以我尝试了以下方法:
public void Main()
{
RunningPackage package = new RunningPackage();
package.Stop();
}
这样我不会将带下划线的代码视为错误,但在保存编辑后的脚本时,SSIS 会说“包中包含的脚本有编译错误”。 using Microsoft.SqlServer.Dts.Runtime; 已导入。
有什么问题?有没有其他方法可以在 C# 中完全停止当前包而不会出错?
【问题讨论】:
-
您正在尝试从脚本任务中停止当前正在运行的包或其他一些包?
-
我正在尝试从脚本任务中停止当前正在运行的包。
-
链接的 MSDN 代码用于外部调用者发出信号,表明当前正在运行的包应该将其包装起来。让我看看有哪些可用的选项
-
你怎么知道包什么时候应该停止运行?在我的脑海中,我看到了一个控制流,关联了 N 个任务,一些是并行的,一些是串行的。 X 发生了,现在我们需要停下来,有点优雅。可能是您在 EVERY 可执行文件的
Disabled上设置了一个表达式,该表达式与名为PleaseStop的包级布尔变量绑定。默认值为 False,但当 X发生时,它变成了 True ,然后一切都被禁用了。这不会阻止飞行中的事情,但会阻止任何新事物的开始。这样的方法适合你吗? -
是的,我试过了,它解决了我的问题。好点子。谢谢!!