1

嗨,我正在寻找一些指导。

我使用 Visual Studio 2015 为目标版本 2016 开发了一个包含几个脚本任务和脚本组件的 SSIS 项目。

我有两个环境服务器 A服务器 B都安装了 SSIS 2016 SP1。

我已经完成了一个将包部署到服务器 A 的项目,并测试了所有执行完美的包。但是,当我将 SSIS_DB 中的包从服务器 A 部署到服务器 BI 时,我的执行报告中会出现这些错误。

“脚本组件,clsid { }”的组件元数据无法升级到组件的较新版本。PerformUpgrade 方法失败

2

从 XML 加载脚本任务时出现异常:System.Exception:脚本任务“”使用此版本的集成服务不支持的 15.0 版脚本。要运行包,请使用脚本任务创建一个新的 VSTA 脚本。在大多数情况下,当您在 %SQL_PRODUCT_SHORT_NAME% Integration Services 中打开 SQL Server Integration Services 包时,脚本会自动转换为使用受支持的版本。在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj,IDTSInfoEvents 事件)

有趣的是,如果我将包直接从 Visual Studio 部署到服务器 B,则包可以正确执行而没有问题。所以服务器A和服务器B之间似乎存在不一致。

一个小的背景是,当两台服务器都建成时,服务器 A 有 Microsoft SQL Server 2016 (SP1-GDR) 和服务器 Microsoft SQL Server 2016 (RTM),但它们现在都在服务器 B 之后有 Microsoft SQL Server 2016 (SP1-GDR)已更新。我不确定升级是如何完成的,我怀疑服务器上的 SSIS 是不同的,但我似乎无法证明这一点。当我检查版本时,它们似乎都返回相同或相似的元数据

4

3 回答 3

1

这是由 SSMS 引起的。我不知道幕后发生了什么,但在部署期间,我使用的是 SSMS 2017,它似乎正在升级我的包中的脚本组件。我改用 SSMS 2016,这个问题就消失了

于 2018-05-19T12:29:18.203 回答
1

正确答案在这里:https ://andyleonard.blog/2017/09/ssis-version-15-0-script-error/

就我而言,问题是项目级别“TargetServerLevel”的设置设置为“SQL Server 2017”。正确的值必须是“SQL Server 2016”。一旦值改变并且项目重新部署错误消失。我相信我团队中的一位开发人员在添加项目时使用了 VS 2017。即使服务器版本不正确,所有其他任务和组件(脚本除外)都很好,并且仅当我不得不使用脚本任务和组件时才出现问题。在此处输入图像描述 解决问题 打开项目参数 => 配置属性 => TargetServerVersion 选择“SQL Server 2016”,然后部署到服务器。

于 2019-01-10T21:17:15.757 回答
0

只是总结一些事情,因为面对这个问题有一些原因:

  1. 您正在为另一个 SQL Server 部署具有目标版本定义的包

在此处输入图像描述

  1. 您正在部署一个包,其中包含与 SQL Server 版本不同的 SSMS 版本的脚本任务

在此处输入图像描述

例如,如果您的包不包含脚本任务,则任何版本的 SSMS 都可以通过 SSISDB 目录将该包部署到任何版本的 SQL Server。不知道为什么会这样。似乎您可以在确保 SQL 版本支持包目标版本的同时部署和执行包,但如果您有一个 ScriptTask 内部,您需要非常小心并确保 SSMS 的集成服务版本相同与 SQL Server 版本。

我将向 Microsoft 提出一个问题,以确定为什么脚本任务有这种处理方式。可能是因为脚本任务依赖于框架。

于 2020-12-02T09:36:37.550 回答