SSIS - 脚本任务...使用此版本的集成服务

时间:2018-05-08 11:06:42

标签: sql-server ssis sql-server-2016 ssis-2016 ssis-development

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

我使用visual studio 2015开发了一个带有几个脚本任务和脚本组件的SSIS项目,用于2016年的目标版本。

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

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

  

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

2

  

从XML加载脚本任务时出现异常:System.Exception:脚本任务""使用此版本的Integration Services不支持的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是不同的,但我似乎无法证明这一点。 当我检查版本时,他们似乎都返回相同或类似的元数据

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我的问题是项目级别“ TargetServerLevel”的设置设置为“ SQL Server 2017”。正确的值必须是“ SQL Server 2016”。更改值后,重新部署的项目就会消失。 我相信我的团队中的一名开发人员在添加项目时使用了VS 2017。即使服务器版本不正确,所有其他任务和组件(例如excep脚本)也都可以,并且仅当我必须使用脚本任务和组件时,问题才会出现。enter image description here 要解决此问题,请打开项目参数=>配置属性=> TargetServerVersion 选择“ SQL Server 2016”,然后部署到服务器。

答案 2 :(得分:0)

仅概述一些事情,因为有一些原因会遇到此问题:

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

enter image description here

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

enter image description here

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

我将向Microsoft开放一个问题,以确保脚本任务为何具有这种处理方式。也许是因为脚本任务是依赖于Framework的。