首页 > 解决方案 > SSIS 无法将数据插入到具有计算列的表中

问题描述

我有一个将数据插入表的 SSIS 流。在更新数据模型并添加计算列之前,此流程一直运行良好。现在,当我尝试加载数据时,出现以下错误:

SQL Server 错误消息 - 消息 271 - 列 '' 无法修改,因为它要么是计算列,要么是 UNION 运算符的结果。

我在这里找到了对此错误消息的一个很好的解释:SQL Server Error Messages - Msg 271

我联系 StackOverflow 的原因是因为该列实际上没有映射到我的 SSIS 流中。这意味着我的 OLEDB 目标组件知道该列的存在,但它的映射设置为<ignore column>. 这是我处理其他列(例如生成的 ID)的方式,它总是可以正常工作。

因此,问题是:为什么我会收到此错误消息?

我的想法是,SSIS 可能会自动生成将null值映射到此计算列的 SQL 插入语句。如果是这种情况,有没有办法强制 SSIS 完全忽略该列的存在?

标签: sql-serverssisetlcalculated-columnsoledbdestination

解决方案


我认为问题在于您在将数据加载到 OLE DB 目标时使用了快速加载选项,请尝试使用常规表加载,因为此问题可能是在 BULK INSERT 操作期间引起的。

还要确保为计算列生成值的表达式不会像NULL在插入的行中那样被评估。


推荐阅读