我在SSIS中有包裹。它有一个执行sql任务,从不同服务器上的表中获取一些配置值。因此,SSIS包获取这些配置值并将它们存储在SSIS中的变量中。这些变量在进一步的sql任务中用作参数。
我遇到的问题是,其中一些配置值为null
。因此,每当SSIS遇到整数类型的空值时,它会将其转换为0
并将其作为0
传递给进一步的任务,而不是将其作为null
传递
如果列的数据类型是日期,并且其值在配置表中为空,则SSIS会分配默认值12/30/1899 12:00:00 AM
并将默认值作为参数而不是null
值传递。
如何让SSIS包传递实际的空值而不是SSIS转换的值?
答案 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 )