几个月前我开始了一份新工作,并注意到一些较旧的SSIS软件包是使用虚拟任务构建的。例如,如果存在执行SQL任务并且它生成布尔结果,则True结果可能会转到需要完成任务的任务。但是,对于False也有一个虚拟任务,它什么也不做,并且被标记为这样。
这是编写这些类型的任务的最佳实践或正确方法吗?我对这些类型的任务进行编码的方式是仅编写所需任务的代码而忽略另一个任务。在我的图像示例中,我将编码True,但不为False添加任务。
只是好奇我在这里做错了什么。
答案 0 :(得分:3)
为什么要添加一个什么都不做的虚拟任务?
如果目标是通知开发人员编辑该软件包,那么您可以在True优先级约束旁边写一个annotation,并在False result is not considered or does or does nothing
如果添加虚拟任务用于调试目的,那么这不是一个坏主意。因为它会使包装流程更清晰。但是,在生产服务器上部署软件包之前,必须先禁用此组件。
如果目标是在注释中提到的优先约束中应用表达式,那么正确的方法是使用Expression Task (如果它是连接到虚拟任务)
同样基于此Microsoft article:
优先约束可以使用表达式来定义两个可执行文件之间的约束
因此,如果需要表达式,那么将其写入True
优先约束,或者如果需要表达式来为变量赋值,那么就像我上面提到的那样使用表达式任务
答案 1 :(得分:1)
在一行中,标准做法是在某些内容未按照所需逻辑运行时创建日志。应将其记录下来以备将来调试。
如果由于某些布尔逻辑而期望为真,并且结果为假,则应该有一些结构来记录它。
现在开始使用虚拟任务它没有任何害处但是应该使用一些可以创建一些日志以供将来参考的任务。