SSIS 如何处理column的nullability

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS 如何处理column的nullability相关的知识,希望对你有一定的参考价值。

今天遇到一个Error,details是在向OLE DB Destination的中Columns[FullName]插入数据时,违反了完整性约束。

[OLE DB Destination [12]] Error: There was an error with OLE DB Destination.Inputs[OLE DB Destination Input].Columns[FullName] on OLE DB Destination.Inputs[OLE DB Destination Input]. The column status returned was: "The value violated the integrity constraints for the column.".

 

Integrity Constraint包括:域完整性约束,实体完整性和参考完整性,Columns[FullName] 不具有实体完整性约束(PK) 和参考完整性约束(FK)。唯一可能违反的就是域完整性约束。域完整性约束包括:CHECK Constraint,DEFAULT Constraint、NOT NULL Constraint(非空约束),Unique Constraint,排除 check,default,unique,唯一能够违反的Integrity Constraint 就是 Not null constraint,就是Table column 的nullability 。

SSIS没有任何属性用于处理SQL Table column的nullability,如 Illustration1 和Illustration2,错误的root cause 是OLE DB Source Component 返回的Column FullName 存在Null值,但是OLE DB Destination Table 的 Column(FullName)定义的是Not Null,不允许为null。

 

SSIS 不处理column nullability,table 的 nullability是由SQL Server database engine来处理的。SSIS在调用 bulk insert 命令插入数据时,SQL Server 检测到数据插入操作违反了表的nullability,停止事务的运行,并向SSIS 报错。

由于SSIS不处理column nullability,所以,只需要修改table column的 nullability,不需要修改SSIS package,就能Fix this error.

 

Illustration1,DataSource(OLEDB Source) Component的External Columns 和 Output Columns 的属性

技术分享

技术分享

Illustration2,DataDestination(OLEDB Destination) Component的External Columns 和 input Columns 的属性

技术分享

技术分享

以上是关于SSIS 如何处理column的nullability的主要内容,如果未能解决你的问题,请参考以下文章

如何处理线程退出的障碍

人们如何处理迭代 Swift 结构值类型属性?

Unknown column 'a' in 'where clause',出现这个问题,如何处理?

如何处理来自 Presenter 的 Datagrid 列的事件?

如何处理ListTile颤动中的右溢出

如何处理 SQLAlchemy、flask、python 中的唯一数据