SSIS中的优先约束未按预期工作

时间:2020-11-05 05:21:57

标签: sql-server ssis

SSIS中的优先约束未按预期工作。我不确定我缺少什么?

预期结果:如果表达式不正确,则不应执行下一个任务,但在这种情况下,程序包将执行下一个组件(加载日期)并失败,因为DFT中传递了NULL值。如果表达式的计算结果不为True,我想停止执行。

enter image description here

插入消息表达式”-ISNULL(@ [User :: vEndActivityDateTime])|| @ [User :: vEndActivityDateTime] ==“ 0000-00-00 00:00:00.0000000

“获取最后日期约束条件表达式”-!ISNULL(@ [User :: vEndActivityDateTime])|| @ [User :: vEndActivityDateTime]!=“” 0000-00-00 00:00:00.0000000“

enter image description here

1 个答案:

答案 0 :(得分:1)

SSIS变量不支持null,因此ISNULL函数在这里不起作用。您似乎要使用0000-00-00 00:00:00.0000的默认值,但这对于SSIS datetime变量数据类型不是有效值。我建议选择另一个永远不会出现在数据中的值作为默认值。在下面的示例中,使用了1900-01-01。 您可以将其设置为1900-01-01 00:00:00.0000,但是它将恢复为默认值,因为这两种方式默认都相同。可以在变量窗格的“值”列中设置变量的默认值(您无需使用其旁边的“表达式”列),然后使用以下表达式设置优先级约束以检查此默认值。

变量: enter image description here

优先约束表达式:

@[User::vEndActivityDateTime] != (DT_DBTIMESTAMP)"1900-01-01 00:00:00.0000"