SSIS和NULL值

时间:2014-02-11 16:07:06

标签: sql-server variables ssis null etl

我在SSIS中有包裹。它有一个执行sql任务,从不同服务器上的表中获取一些配置值。因此,SSIS包获取这些配置值并将它们存储在SSIS中的变量中。这些变量在进一步的sql任务中用作参数。

我遇到的问题是,其中一些配置值为null。因此,每当SSIS遇到整数类型的空值时,它会将其转换为0并将其作为0传递给进一步的任务,而不是将其作为null传递

如果列的数据类型是日期,并且其值在配置表中为空,则SSIS会分配默认值12/30/1899 12:00:00 AM并将默认值作为参数而不是null值传递。

如何让SSIS包传递实际的空值而不是SSIS转换的值?

3 个答案:

答案 0 :(得分:1)

我会将所有变量的数据类型更改为String,并更改Execute SQL Task命令以返回字符串值,例如使用CAST ... AS NVARCHAR(4000))

字符串变量通常更容易使用。

答案 1 :(得分:0)

如上所述使用字符串如何然后在SQL任务中尝试选择isnull([field],' null')'

这会将所有空值更改为字符串' null'。

这是一种做事的一种黑客方式,但它可能会起作用。

答案 2 :(得分:0)

有各种选择。其中之一,你需要创建一个表达式,它将你的日期转换为null而不是最小的日期值(" 1899-12-30")

此类转换的表达示例:

(DT_DATE)( REPORT_DATE ==(DT_DATE)"1899-12-30" ? NULL(DT_DATE) : REPORT_DATE )