SSIS包报“varchar值‘6160382514d97’转换时int列溢出”问题求助
解决方案
- 优先检查OLEDB Source的查询逻辑是否存在隐式转换触发条件:如果你的查询语句中存在
WHERE、JOIN ON子句中将该nvarchar(250)列与数值类型的字段、常量做等值/条件匹配的写法,比如WHERE 问题列 = 1001,SQL Server会默认将该列的所有值隐式转换为INT类型再做匹配,一旦列中存在非数字内容就会抛出转换失败错误。修正方案为给所有匹配的数值常量加上单引号,明确为字符串类型匹配,例如修改为WHERE 问题列 = '1001'。 - 刷新SSIS组件的元数据缓存:SSIS数据流组件会默认缓存源端的元数据信息,源表结构发生过变更后可能出现元数据不匹配的问题。右键点击OLEDB Source组件打开「高级编辑器」,切换到「输入和输出属性」标签页,核对报错列的输出数据类型是否为
DT_WSTR、长度为250,和SQL Server源表的nvarchar(250)类型对齐,如有偏差可以直接手动修改,或者点击「刷新」按钮重新拉取最新的源端元数据。 - 排查源表异常数据和隐藏逻辑:如果上述操作都没有解决问题,直接在SQL Server端执行查询
SELECT 问题列 FROM 源表 WHERE TRY_CAST(问题列 AS INT) IS NOT NULL,确认该列是否混入了数值类内容,同时检查源表是否存在和该列关联的计算列、约束逻辑涉及INT类型转换。
相关附件



内容的提问来源于stack exchange,提问作者Alan Donaldson
相关产品推荐
相关产品推荐

