【问题标题】:Terminate current SSIS package in C# Script Task without exception/error在 C# 脚本任务中终止当前的 SSIS 包,没有异常/错误
【发布时间】: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 ,然后一切都被禁用了。这不会阻止飞行中的事情,但会阻止任何新事物的开始。这样的方法适合你吗?
  • 是的,我试过了,它解决了我的问题。好点子。谢谢!!

标签: c# ssis


【解决方案1】:

在我的脑海中,我看到了一个控制流,N 个相关的任务,一些是并行的,一些是串行的。 X 事件发生了,现在我们需要停下来,有点优雅。

您可能在每个可执行文件的Disabled 属性上设置了一个表达式,该属性与名为PleaseStop 的包级布尔变量相关联。它的默认值是 False,但是当 X 发生时,它会变成 True,然后一切都被禁用。

这不会阻止飞行中的事物,但会阻止任何新事物的开始。

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多