SSIS - 脚本任务...使用此版本集成服务中不支持的 15.0 版脚本

SSIS - The script task ... use version 15.0 script that is not supported in this release of Integrated service

您好,我正在寻找一些指导。

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

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

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

The component metadata for "script component, clsid { }" could not be upgraded to the newer version of the component. The PerformUpgrade method failed

2

There was an exception while loading Script Task from XML: System.Exception: The Script Task "" uses version 15.0 script that is not supported in this release of Integration Services. To run the package, use the Script Task to create a new VSTA script. In most cases, scripts are converted automatically to use a supported version, when you open a SQL Server Integration Services package in %SQL_PRODUCT_SHORT_NAME% Integration Services. at Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj, IDTSInfoEvents events)

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

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

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

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

在我的例子中,问题是项目级别的设置“TargetServerLevel”设置为“SQL Server 2017”。正确的值必须是“SQL Server 2016”。一旦更改了值并且项目重新部署,错误就会消失。 我相信我团队中的一位开发人员在添加项目时使用了 VS 2017。所有其他任务和组件,除了脚本,即使服务器版本不正确也没有问题,只有当我不得不使用脚本任务和组件时才会出现问题。 要解决此问题,请打开项目参数 => 配置属性 => TargetServerVersion Select“SQLServer 2016”,然后部署到服务器。

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

  1. 您正在为另一个 SQL 服务器部署一个带有目标版本定义的包

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

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

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