虚拟 SSIS 任务是个好主意吗
Is a dummy SSIS task a good idea
几个月前我开始了一份新工作,我注意到一些旧的 SSIS 包是用虚拟任务构建的。例如,如果有一个 Execute SQL Task 并且它产生一个 Boolean 结果,True 结果可能会转到需要完成某事的任务。但是,还有一个 False 的虚拟任务,它什么也不做,并被标记为这样。
这是我所看到的示例。
这是对这些类型的任务进行编码的最佳实践或正确方法吗?我编写这些类型任务的方法是只编写所需的任务而忽略其他任务。在我的图像示例中,我会编写 True 代码,但不会为 False 添加任务。
只是好奇我是否做错了什么。
为什么要添加一个什么都不做的虚拟任务?
(1) 通知开发人员
如果目标是通知开发人员编辑包那么你可以在 True 优先约束旁边写一个 annotation,并且写如果 False result is not considered or does or does nothing
(2) 用于调试目的
如果添加虚拟任务是用于调试目的,那么这不是一个坏主意。因为它会让浏览者的包裹流程更加清晰。但是在生产服务器上部署包之前,您必须禁用此组件。
(3) 应用表达式
如果目标是在优先约束中应用表达式,就像评论中提到的那样,那么正确的方法是使用Expression Task (如果它连接到虚拟任务)
也基于此Microsoft article:
A precedence constraint can use an expression to define the constraint between two executables
所以如果需要表达式,那么将它写在True
优先约束中,或者如果需要表达式来为变量赋值,那么就像我提到的以上使用表达式任务
在一行标准实践中,如果某些事情没有按照所需的逻辑进行,则创建日志。应该记录它以供将来调试。
如果您期望某些布尔逻辑结果为真,但事实证明它为假,那么应该有一些结构来记录它。
现在开始使用虚拟任务,这没有什么坏处,但应该使用一些可以创建一些日志以供将来参考的任务。
几个月前我开始了一份新工作,我注意到一些旧的 SSIS 包是用虚拟任务构建的。例如,如果有一个 Execute SQL Task 并且它产生一个 Boolean 结果,True 结果可能会转到需要完成某事的任务。但是,还有一个 False 的虚拟任务,它什么也不做,并被标记为这样。
这是我所看到的示例。
这是对这些类型的任务进行编码的最佳实践或正确方法吗?我编写这些类型任务的方法是只编写所需的任务而忽略其他任务。在我的图像示例中,我会编写 True 代码,但不会为 False 添加任务。
只是好奇我是否做错了什么。
为什么要添加一个什么都不做的虚拟任务?
(1) 通知开发人员
如果目标是通知开发人员编辑包那么你可以在 True 优先约束旁边写一个 annotation,并且写如果 False result is not considered or does or does nothing
(2) 用于调试目的
如果添加虚拟任务是用于调试目的,那么这不是一个坏主意。因为它会让浏览者的包裹流程更加清晰。但是在生产服务器上部署包之前,您必须禁用此组件。
(3) 应用表达式
如果目标是在优先约束中应用表达式,就像评论中提到的那样,那么正确的方法是使用Expression Task (如果它连接到虚拟任务)
也基于此Microsoft article:
A precedence constraint can use an expression to define the constraint between two executables
所以如果需要表达式,那么将它写在True
优先约束中,或者如果需要表达式来为变量赋值,那么就像我提到的以上使用表达式任务
在一行标准实践中,如果某些事情没有按照所需的逻辑进行,则创建日志。应该记录它以供将来调试。
如果您期望某些布尔逻辑结果为真,但事实证明它为假,那么应该有一些结构来记录它。
现在开始使用虚拟任务,这没有什么坏处,但应该使用一些可以创建一些日志以供将来参考的任务。