SSIS包指向SQL Server 2019时运行失败相关问题咨询
SSIS 升级到2019目标版本ODBC numeric类型转换错误排查方案
关联错误日志:
[ODBC Source 2] Error: SQLSTATE: 07006, Message: [Cache ODBC][State : 07006][Native Code 7006]
ERROR #388: Unknown error, code 7006;
[ODBC Source 2] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "ODBC Source.Outputs[ODBC Source Output]" failed because error code 0xC020F450 occurred, and the error row disposition on "ODBC Source" specifies failure on error.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on ODBC Source returned error code 0xC0209029.
- 优先升级对应ODBC驱动版本:SSIS 2019对ODBC驱动的适配要求和2017/2016存在差异,你当前使用的Cache ODBC驱动大概率没有适配SSIS 2019的类型校验规则,先更新到驱动官方最新适配SQL Server 2019的版本后重试。
- 显式声明字段类型转换逻辑:SSIS 2019对numeric类型的隐式转换校验比旧版本严格很多,即使高级编辑器显示映射正常,也可能存在精度/小数位的隐性不匹配,你可以直接在ODBC源的查询语句中对问题字段做显式转换,写法参考
CAST(问题字段 AS NUMERIC(你需要的精度, 你需要的小数位)),跳过SSIS自动映射的校验逻辑。 - 切换运行时位数验证:SSIS 2019对32/64位驱动的加载逻辑做了调整,你可以在SSDT项目属性的调试选项卡,修改
Run64BitRuntime的配置,和原来的配置反过来测试,确认是否是驱动位数不匹配导致的转换错误。 - 更新SSDT的SSIS扩展组件:你使用的Visual Studio 2019内置的SSIS扩展如果不是最新版本,存在已知的2019目标版本类型映射Bug,可以在VS扩展管理器中找到SQL Server Integration Services扩展,升级到最新版本后重新测试。
- 临时兼容方案:如果短期内无法定位根本问题,可以保留SSIS包的目标版本为2017,SSIS 2019完全兼容运行2017版本的包,不会影响你将SSISDB兼容级别设置为2019,也不会影响其他功能的正常使用。
内容的提问来源于stack exchange,提问作者Chad
相关产品推荐
相关产品推荐

