SSIS Excel Source读取空DT_NTEXT列触发OLEDB错误求助
SSIS Excel Source长文本空列报错修复方案
核心原因
该报错由Excel OLE DB驱动的动态类型推断逻辑导致:首次配置时驱动根据有长文本的文件将Comment列识别为DT_NTEXT,但遍历到该列全空的第五个文件时,驱动扫描行后误将该列推断为短字符串类型,类型不匹配触发读取失败。
可落地修复步骤
- 强制关闭连接元数据动态验证
选中Excel连接管理器,在属性面板将DelayValidation属性设置为True,避免每次切换遍历文件时SSIS重新校验列元数据。 - 固定Excel Source输出列配置
打开Excel Source的高级编辑器,切换到「输入和输出属性」标签页,找到Excel Source Output下的Comment列,手动配置:- DataType固定为
DT_NTEXT - 错误行处置
ErrorRowDisposition设置为RD_IgnoreFailure,空列场景下不会直接中断包运行
- DataType固定为
- 补充连接字符串强制扫描规则
在已有IMEX=1的基础上,Excel连接字符串末尾追加;MaxScanRows=0;ImportMixedTypes=Text,强制驱动扫描全表判断类型,不会因单列全空就切换类型。 - 兜底替换方案
若上述配置仍不生效,改用脚本组件作为数据源读取Excel:引用EPPlus库手动读取文件内容,直接指定Comment列为字符串类型写入数据流,完全绕过OLE DB驱动的自动类型推断逻辑。
注意事项
确认SSIS运行环境的Access Database Engine位数和项目运行位一致:若安装64位驱动,在SSIS项目属性-调试页将Run64BitRuntime设置为True,32位驱动则设置为False,避免驱动位数不匹配偶发长文本读取错误。
内容的提问来源于stack exchange,提问作者Moshe HAYUN
相关产品推荐
相关产品推荐

