SSIS脚本组件,允许空值

时间:2013-06-25 22:19:41

标签: sql-server-2008 ssis null bids

我有一个我编程的SSIS包,我的脚本组件不允许空列输入。我已经选中了该框以保持平面文件源组件中的空值。我的程序运行良好,直到我的脚本组件,我得到错误“列有一个空值”(超级模糊,我知道)。当前抛出错误的列是一个“int”值列,用于我的脚本中的聚合。

我可以将空值设为0或说“NULL”,但我更愿意将它们留空。

我正在使用SQL Server BIDS 2008。

3 个答案:

答案 0 :(得分:8)

因为SSIS处理数据库太多并且不想花费大量时间来区分DB NULL和C#NULL,所以它们为Buffer中的每个输入列创建了具有命名约定的布尔属性(columnname)_IsNull 。您可以在MSDN上了解更多相关信息。

因此,您必须使用这些缓冲区列来确定该值是否为null,然后执行您尝试对组件中的该列执行的任何操作。

类似

if (!Row.MyColumn_IsNull) { 
//do something }
else {
//do something else, or nothing, etc.
}

答案 1 :(得分:2)

虽然Kyle的答案非常充分,但我使用了一种工作得很好的不同方法。我用三元组来表示c#。

价值 = 价值 _IsNull? 真值虚假值;

Row。 rowname = Row。 rowname _IsNull? 0:行。 rowname ;

如果我的脚本中的null为null,则会将我的null整数列的值更改为0。否则,它保留了值。

答案 2 :(得分:0)

您的错误是在C#代码中发生的吗?当你有一个数据类型为int的数据库列时,它会有点令人抓狂,它允许空值。在C#land中你必须使用int吗?当你需要接受空值时,它被认为是int。否则,提到的方法已经是一个很好的方法。