我正在通过vb.net在SSIS上创建脚本组件
我想显示消息" ERROR"并且运行包停止。
我尝试使用ConponentMetaData.FireError(0,me.String," ERROR",String.Empty,0,False)
当我运行包时,消息显示,脚本组件变为绿色,但程序包仍然运行。
我认为ConponentMetaData没有停止包的功能。 我需要找到如何停止包并显示消息的方式。
我想知道如何做到这一点
答案 0 :(得分:0)
你能不能将脚本任务状态设置为失败并让它自行停止?
ComponentMetaData.FireError(0, me.String, "ERROR", String.Empty, 0, False)
Dts.TaskResult = ScriptResults.Failure
Exit Sub
这将使脚本任务失败,包应该停止。
如果出于某种原因,您仍然希望脚本任务成功并在此之后停止运行包,则可以在包中定义一个变量,例如ScriptFailure
,数据类型为Int32。将其作为ReadWriteVariable添加到脚本任务中,然后在引发错误时将其设置为某个值,例如1,在脚本任务中
Dts.Variables("User::ScriptFailure").Value = 1
然后为与下一个任务的连接添加优先约束。选择表达式并将@[User::ScriptFailure] != 1
作为表达式。如果ScriptFailure
参数不等于1,则程序包将仅继续执行下一个任务。
第三种选择是致电RunningPackage.Stop()。我自己从来没有理由使用它,但这样的事情应该有效。
Dim app As Application = New Application()
Dim pkgs As RunningPackages = app.GetRunningPackages("yourserver")
Dim p As RunningPackage
For Each p In pkgs
If p.PackageName = "MyPackageName"
p.Stop
Exit Sub
End If
Next
值得注意的是,根据上面链接中的文档调用Stop时,包不会立即停止
在发出停止请求和停止请求之间可能会有延迟 包裹实际停止的时间。