SSIS C#脚本不兼容

我最近接管了基于SSIS ETL的流程,由于一些许可问题,我不得不从Data Tools 2013升级到2015年。大部分项目在升级后幸存下来并且运行良好。 但是,在两个包中,我有一个非常简单的C#方法(脚本转换)来解析导致某些问题的一些数据。

目前,使用“build”(不是通过SSIS目录的较新开发方法)完成部署,SQL SERVER Job的步骤直接指向dtsx文件。

该作业是在SQL SERVER 2014中创建的,它按步骤调度ETL。 服务器具有64位配置。

我试图将SSIS项目属性“Run64BitRuntime”更改为False并强制失败的步骤使用32位运行时。 此外,我还尝试使用相同的配置重新创建组件,但两者都不起作用。

奇怪的是,当我从SSIS运行包时,它成功完成但作业崩溃并抛出以下错误消息:

*“decode”是转换脚本组件的名称

消息…开始:11:32:30 PM错误:2015-12-12 23:32:31.26代码:0xC0047062源:stg stg(decode [2])描述:Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:解码版本与此版本的DataFlow不兼容。 [[指定组件的版本或管道版本或两者都高于当前版本。 此软件包可能是在新版本的DTS或组件上创建的,而不是安装在当前PC上。]]在Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100 wrapper,Int32 lPipelineVersion)结束错误错误:2015-12 -12 23:32:31.26代码:0xC004801F源:stg stg(SSIS.Pipeline)描述:“decode”的组件元数据无法升级到组件的较新版本。 PerformUpgrade方法失败。 结束错误错误:2015-12-12 23:32:31.28代码:0xC004801F源:stg SSIS.Pipeline描述:“decode,clsid {33D831DE-5DCF-48F0-B431-4D327B9E785D}”的组件元数据无法升级到较新版本的组件。 PerformUpgrade方法失败。 结束错误错误:2015-12-12 23:32:31.28代码:0xC0048021源:stg decode [2]描述:组件丢失,未注册,无法升级或缺少必需的接口。 此组件的联系信息是“包含并运行自定义脚本代码。例如,应用限制”收入“列中有效值范围的业务规则,或者在两列中添加值并计算总和的平均值。 Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation;保留所有权利; http://www.microsoft.com/sql/support;9 “。 结束错误错误:2015-12-12 23:32:31.28代码:0xC0047017源:stg SSIS.Pipeline描述:解码validation失败并返回错误代码0xC0048021。 结束错误错误:2015-12-12 23:32:31.28代码:0xC004700C源:stg SSIS.Pipeline描述:一个或多个组件validation失败。 结束错误错误:2015-12-12 23:32:31.28代码:0xC0024107来源:stg描述:任务validation期间有错误….

我遇到了同样的问题“错误代码: 0xC0048021 ”并解决了它。

我从这里安装了这个版本的SSDT https://msdn.microsoft.com/en-us/mt429383

然后,在SSDT解决方案资源管理器中右键单击项目,转到属性 – >配置属性 – > TargetServerVersion = SQL SERVER 2014

然后,在SSDT解决方案资源管理器中右键单击Project,转到属性 – >配置属性 – >调试 – > Run64BitRuntime = False

参考此链接http://blogs.msdn.com/b/ssis/archive/2016/03/03/what-s-new-for-ssis-2016-rc0.aspx 在此处输入图像描述

我试图更新我唯一没有触及的元素 – SQL Server 2014,但没有任何影响。 最终我决定完全拥有进程并通过将逻辑推送到数据库来解决它。