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”,然后部署到服务器。
只是总结一些事情,因为有一些原因会面临这个问题:
- 您正在为另一个 SQL 服务器部署一个带有目标版本定义的包
- 您正在部署一个包含脚本任务的包,其 SSMS 版本与 SQL 服务器版本
不同
例如,如果您的包不包含脚本任务,则任何版本的 SSMS 都可以通过 SSISDB 目录将包部署到任何版本的 SQL 服务器。不知道为什么会这样。似乎您可以部署和执行包,同时确保 SQL 版本支持包目标版本,但如果您内部有 ScriptTask,则需要非常小心并确保集成服务版本SSMS 与 SQL 服务器版本相同。
我将向 Microsoft 提出一个问题,以确定为什么脚本任务具有这种处理方式。可能是因为脚本任务依赖于框架。
您好,我正在寻找一些指导。
我使用 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。所有其他任务和组件,除了脚本,即使服务器版本不正确也没有问题,只有当我不得不使用脚本任务和组件时才会出现问题。
只是总结一些事情,因为有一些原因会面临这个问题:
- 您正在为另一个 SQL 服务器部署一个带有目标版本定义的包
- 您正在部署一个包含脚本任务的包,其 SSMS 版本与 SQL 服务器版本 不同
例如,如果您的包不包含脚本任务,则任何版本的 SSMS 都可以通过 SSISDB 目录将包部署到任何版本的 SQL 服务器。不知道为什么会这样。似乎您可以部署和执行包,同时确保 SQL 版本支持包目标版本,但如果您内部有 ScriptTask,则需要非常小心并确保集成服务版本SSMS 与 SQL 服务器版本相同。
我将向 Microsoft 提出一个问题,以确定为什么脚本任务具有这种处理方式。可能是因为脚本任务依赖于框架。