2014-09-05 122 views
0

我试图从脚本任务中停止包执行。据MSDN Article: RunningPackage只是RunningPackage.Stop();应该工作,但我得到“的对象引用需要非静态字段,方法或属性Microsoft.SqlServer.Dts.Runtime.RunningPackage.Stop()”这样的错误:终止C#脚本任务中的当前SSIS包无例外/错误

public void Main() 
    { 
     RunningPackage.Stop(); // Object reference error. 
    } 

所以我尝试了以下内容:

public void Main() 
    { 
     RunningPackage package = new RunningPackage(); 
     package.Stop();  
    } 

这样,我没有得到下划线的代码错误,但保存编辑脚本SSIS说,包中包含的“脚本有编译错误时“using Microsoft.SqlServer.Dts.Runtime;已导入。

有什么问题?有没有其他方式可以在C#中完全停止当前的包而不会出错?

+0

您正试图停止脚本任务中当前正在运行的程序包或其他程序包? – billinkc 2014-09-05 16:23:56

+0

我试图从脚本任务中停止当前正在运行的程序包。 – 17nxo 2014-09-05 16:27:04

+0

链接的MSDN代码用于外部调用程序发出信号,指示当前正在运行的程序包应将其封装起来。让我看看可以使用哪些选项 – billinkc 2014-09-05 16:29:15

回答

0

在我看来,我看到一个控制流,N任务关联,一些并行,一些连续。 X事件发生,现在我们需要停下来,有点优雅。

可能是因为您将每个可执行文件的Disabled属性设置为绑定到包级别布尔变量PleaseStop。它的默认值是False,但是当X发生时,它变为True,然后使一切都变为禁用。

不会停止的事情在飞行中,但它会从开始停止任何新的东西。