SSIS部署SQL Server2016报DataFlow与Dynamics CRM组件版本不兼容错误
问题根因
该报错和SSIS项目的TargetServerVersion配置无直接关系,核心原因是部署目标SQL Server 2016服务器上安装的KingswaySoft Dynamics CRM 组件版本,低于开发环境构建包时使用的v21.2版本。
KingswaySoft的Dynamics CRM Destination(即报错里的Create Records组件)属于第三方自定义SSIS组件,不会被打包进.ispac部署文件。包执行时会直接加载服务器本地全局程序集缓存(GAC)中注册的对应组件:本地VS调试时调用的是开发机安装的v21.2版本组件,所以可以正常构建、执行;SQL Server 2016服务器上安装的Kingsway组件版本更低,无法识别高版本组件生成的数据流元数据,就会抛出版本不匹配异常。
你在VS2019+SQL Server 2019环境中可正常运行包,本质是那台设备上安装的Kingsway组件版本和构建包用的版本匹配,和SQL Server本身的版本没有直接关联。
可行解决方案
按落地难度从低到高排序,任选其一即可:
- 方案1(优先选择):登录SQL Server 2016部署服务器,安装和开发环境完全一致的KingswaySoft v21.2版本(注意必须安装SSIS运行时支持组件,不能只装面向VS的设计时组件),安装完成后重启SQL Server Integration Services服务,重新执行部署后的包即可恢复正常。
- 方案2:如果服务器因合规、环境限制无法升级Kingsway组件,就在开发环境卸载当前v21.2版本的KingswaySoft,安装与SQL 2016服务器上完全一致的旧版本Kingsway组件。安装完成后重新打开SSIS项目,删除原有Dynamics CRM Destination组件后重新拖拽配置、映射字段,确认项目
TargetServerVersion保持为SQL Server 2016,重新构建部署即可。 - 方案3:如果没有服务器组件的操作权限,也不想降级开发环境组件,可以放弃SSIS catalog部署模式,改用文件系统部署:将包放在安装了匹配版本Kingsway组件的机器上,通过SQL Agent或其他调度工具直接调用本地dtexec执行包,不依赖SQL Server本地的SSIS运行时组件。
注意:调整
TargetServerVersion仅会适配微软原生SSIS组件的版本兼容逻辑,对第三方自定义组件无效,这也是之前尝试通用方案没有解决问题的核心原因。
内容的提问来源于stack exchange,提问作者magicalKhachapuri
相关产品推荐
相关产品推荐

