SSIS连接OData数据源报VS_ISBROKEN错误,无法写入OLE DB目标如何解决?
问题根因定位
该报错本质不是OData数据源本身的连接故障,预览数据正常已经验证了接口连通性,问题出在SSIS数据流的元数据校验阶段:OData数据源输出的列元数据没有正常传递到下游目标组件,触发了目标组件的输入校验规则。
解决步骤
- 第一步:刷新OData数据源的元数据
双击打开OData数据源编辑器,切换到「列」选项卡,点击左下角的「刷新」按钮,确认所有需要输出的列都处于勾选状态,点击确定保存配置。 - 第二步:刷新数据流路径的元数据
右键点击连接OData数据源和目标组件的蓝色数据流箭头,选择「编辑」,切换到「元数据」选项卡,点击「刷新」按钮,确认列表中展示了所有OData输出的列元数据,无空值或错误标识。 - 第三步:调整延迟验证属性
分别选中OData数据源、OLE DB目标组件,右键打开「属性」面板,找到DelayValidation属性,将值改为True。该配置会跳过设计时的预校验,等到包实际运行时再拉取元数据做验证,避免Dynamics 365 OData接口的元数据加载延迟,导致SSIS设计时误判没有输出列。 - 第四步:排查自定义查询问题
如果你在OData数据源中使用了自定义查询语句,需要确认查询没有使用SSIS OData组件不支持的特殊语法,同时返回的列名没有包含SQL Server不支持的特殊字符,必要时可以在OData数据源后新增「派生列」组件,对列名做标准化重命名后再连接到目标组件。 - 第五步:确认目标组件映射
打开OLE DB目标编辑器,切换到「映射」选项卡,确认输入列和目标表列已经完成自动或手动映射,无未匹配的输入列,保存配置后重新验证即可。
报错说明
The number of input columns for OLE DB Destination.Inputs[OLE DB Destination Input] cannot be zero是SSIS的标准校验报错,仅代表目标组件未获取到任何上游传递的输入列,完成上述元数据配置后即可解决。
内容的提问来源于stack exchange,提问作者Ibrahim Halici
相关产品推荐
相关产品推荐

