5

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

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

我正在使用 SQL Server BIDS 2008。

4

3 回答 3

11

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

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

所以像

if (!Row.MyColumn_IsNull) { 
//do something }
else {
//do something else, or nothing, etc.
}
于 2013-06-25T22:26:27.693 回答
3

虽然凯尔的回答非常充分,但我使用了另一种效果很好的方法。我在 c# 中使用了三元组。

=_IsNull ?真值假值

排。行名= 行。行名_IsNull?0:行。行名

如果它们为空进入我的脚本,这会将我的空整数列的值更改为 0。否则,它保留该值。

于 2013-06-26T12:58:09.207 回答
0

您的错误是否发生在某处的 C# 代码中?当您有一个数据类型为 int 的数据库列并且它允许空值时,它有时会变得有点令人抓狂。在 C# 领域你必须使用 int? 当您需要接受空值时,与 int 相对。否则,已经提到的方法是一个很好的方法。

于 2013-06-26T13:26:10.923 回答