我最近接管了基于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描述:解码验证失败并返回错误代码0xC0048021.结束错误错误:2015-12-12 23:32:31.28代码:0xC004700C源:stg SSIS.Pipeline描述:一个或多个组件验证失败.结束错误错误:2015-12-12 23:32:31.28代码:0xC0024107来源:stg描述:任务验证期间有错误....
我遇到了同样的问题"错误代码: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