【发布时间】:2015-12-13 00:11:52
【问题描述】:
我最近接管了一个基于 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 错误:2015-12-12 23:32:31.26 代码:0xC0047062 来源:stg stg(解码 [2]) 描述:Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:版本of decode 与此版本的 DataFlow 不兼容。 [[指定组件的版本或管道版本或两者都高于当前版本。此包可能是在新版本的 DTS 或当前 PC 上安装的组件上创建的。]] 在 Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100 wrapper, Int32 lPipelineVersion) End Error Error: 2015-12 -12 23:32:31.26 代码:0xC004801F 来源:stg stg (SSIS.Pipeline) 描述:“解码”的组件元数据无法升级到组件的较新版本。 PerformUpgrade 方法失败。结束错误错误:2015-12-12 23:32:31.28 代码:0xC004801F 源:stg SSIS.Pipeline 描述:“解码,clsid {33D831DE-5DCF-48F0-B431-4D327B9E785D}”的组件元数据无法升级到组件的较新版本。 PerformUpgrade 方法失败。 End Error 错误: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 描述:一个或多个组件验证失败。 End Error 错误:2015-12-12 23:32:31.28 代码:0xC0024107 来源:stg 描述:任务验证过程中出现错误......
【问题讨论】:
-
看起来您的本地环境具有与 VS2013 和 VS2015 兼容的两个版本的 .NET 框架。部署环境中不存在相同的内容。
-
由于 SQL Server 是我唯一没有升级的元素(2014 年),也许它与此有关。
标签: c# sql-server ssis