SSIS C#脚本不兼容

时间:2015-12-13 00:11:53

标签: c# sql-server ssis

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

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

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

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

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

*"解码"是转换脚本组件的名称

信息 ...开始时间:11:32:30错误:2015-12-12 23:32:31.26代码:0xC0047062源:stg stg(decode [2])描述:Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:版本of decode与此版本的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}&#34的组件元数据;无法升级到组件的较新版本。 PerformUpgrade方法失败。结束错误错误:2015-12-12 23:32:31.28代码:0xC0048021源:stg decode [2]描述:组件丢失,未注册,无法升级或缺少必需的接口。此组件的联系信息为"包含并运行自定义脚本代码。例如,应用一个业务规则来限制"收入中的有效值范围。列或在两列中添加值并计算总和的平均值。; Microsoft Corporation; Microsoft SQL Server;微软公司;版权所有; http://www.microsoft.com/sql/support;9&#34 ;.结束错误错误:2015-12-12 23:32:31.28代码:0xC0047017源:stg SSIS.Pipeline描述:解码验证失败并返回错误代码0xC0048021。结束错误错误:2015-12-12 23:32:31.28代码:0xC004700C源:stg SSIS.Pipeline描述:一个或多个组件验证失败。结束错误错误:2015-12-12 23:32:31.28代码:0xC0024107来源:stg描述:任务验证期间出错...

4 个答案:

答案 0 :(得分:7)

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

我从这里https://msdn.microsoft.com/en-us/mt429383

安装了此版本的SSDT

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

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

参考此链接http://blogs.msdn.com/b/ssis/archive/2016/03/03/what-s-new-for-ssis-2016-rc0.aspx enter image description here

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果即使将“ SQL目标版本”设置为2016,也遇到此问题,请确保使用的SQL Server部署向导版本正确。 如果尝试在SQL2016上部署程序包,请确保具有ISDeploymentWizard:

C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ DTS \ Binn Server \ 130 \ DTS \ Binn \ ISDeploymentWizard.exe

如果没有,则必须安装专用于SQL Server 2016(download link)的SSMS,它将安装ISDeploymentWizard。较高版本的SSMS中的向后兼容不会安装ISDeploymentWizard。

用于更高版本的ISDeploymentWizard可能会将SSIS包升级到更高版本,而SQL Server无法对其降级。

答案 3 :(得分:0)

如果您更改了项目的目标服务器版本,如其他答案所述,请确保检查是否已针对要部署的适用配置进行了此操作(开发,测试,生产)。