Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS脚本组件在部署时不工作。抱怨ComponentVersionMismatchError_Sql Server_Ssis_Etl_Sql Server 2016_Ssis 2016 - Fatal编程技术网

Sql server SSIS脚本组件在部署时不工作。抱怨ComponentVersionMismatchError

Sql server SSIS脚本组件在部署时不工作。抱怨ComponentVersionMismatchError,sql-server,ssis,etl,sql-server-2016,ssis-2016,Sql Server,Ssis,Etl,Sql Server 2016,Ssis 2016,在SSDT Visual Studio 2017上运行良好的脚本组件包在部署到SQL Server 2016时不会运行。它抛出ComponentVersionMismatchException 因此,其他软件包工作正常。这个有一个带有脚本组件目标的数据流。当我第一次开始开发该项目时,我没有将目标从SQL 2017调整到SQL 2016。我开发了所有东西,并让它从SSDT运行。我正在使用.ispac文件进行部署。部署时,它会抛出ComponentVersionMismatchException。以

在SSDT Visual Studio 2017上运行良好的脚本组件包在部署到SQL Server 2016时不会运行。它抛出ComponentVersionMismatchException

因此,其他软件包工作正常。这个有一个带有脚本组件目标的数据流。当我第一次开始开发该项目时,我没有将目标从SQL 2017调整到SQL 2016。我开发了所有东西,并让它从SSDT运行。我正在使用.ispac文件进行部署。部署时,它会抛出ComponentVersionMismatchException。以下是我试图让脚本组件运行的内容:

将目标更改为SQL 2016。失败。 进行微小更改,并确保重新编译脚本。失败 确保选择了Visual C 2015。失败。 制作包的副本,并删除脚本组件。这是成功的。 在副本中,只需添加一个新的空脚本组件作为目标。再次失败。 删除数据流任务并使用空脚本组件重建。失败。 完全从头开始创建包,并使用相同的源和空脚本组件重新创建数据流。失败。 我尝试完全创建一个新项目,将目标设置为SQL 2016,并创建了一个类似的数据流,仅使用一个表作为源,一个空脚本组件作为目标。还是失败了。
我希望一个全新的针对SQL 2016的项目能够在服务器上执行,该项目的脚本组件什么都不做。这一点我相当困惑。

SSIS集成服务项目不向后兼容,因此如果部署在VS 2017中编写的包,则需要将目标从SQL 2017调整为SQL 2016。

尝试直接从Visual Studio部署,而不是使用ispac。 它可能类似于:

我完全同意@Larnu的评论,这个问题不仅仅与目标服务器版本有关。即使您选择SQL Server 2016作为目标服务器,脚本组件也是使用最新版本的4.6创建的。您可以通过在部署服务器上安装相同版本的.Net framework来解决此问题。

根据Piotr的说法,并且我已经更新到VS2017的VS shell/SSDT的最新版本,我尝试安装VS2015的SQL server数据工具

Visual Studio 2015能够直接部署到本地服务器,并且从VS2015版本部署的软件包没有出现VS2017版本的执行问题

鉴于VS2019的SSDT已经发布,未来可能值得尝试该版本


看起来它在VS2017的SSDT中仍然是一个未修复的错误。

我希望一个全新的针对SQL 2016的项目能够在服务器上执行,该项目的脚本组件不起任何作用。在这一点上我相当迷茫。不,不会。如果您创建了一个针对SQL Server 2017 box的脚本,那么它将使用SQL Server 2016无法使用的较新版本的.Net framework。即使该脚本不起任何作用,.Net Framework版本的要求仍然存在。当我创建新项目时,我完全是在第8步,我告诉它以SQL 2016为目标。在项目指向SQL 2016之后,我从头开始创建了一个脚本组件。我的脚本组件说他们正在使用Visual C 2015。你是说我需要在别处调整.NET Framework版本吗?OP提到将目标更改为SQL 2016。失败。我要部署到的服务器和visual studio安装在同一个框中。除了脚本组件上的visualc2015这句话之外,还有什么方法可以在脚本组件本身中设置目标框架呢?如果可以的话,我会这么做。在VS2017中,如果我尝试直接部署项目,则在尝试连接到服务器时会抛出一个错误。如果我通过ispac进行部署,它将进行部署。直接加载时,它会出现错误,无法加载文件或程序集“Microsoft.SqlServer.Management.IntegrationServicesEnum,Culture=neutral,PublicKeyToken=89845DCD80CC91”或其依赖项之一。参数不正确。HRESULT异常:0x80070057 E_INVALIDARG mscorlibFrom:很抱歉出现此问题。这实际上是VS 15.8中的一个回归。请安装最新的SSDT 15.8,其中包含该问题的修复程序。是的,我在VS 2017上安装了SSDT 15.9,然后在正确地将目标设置为SQL 2016后重新部署,这修复了与此原始帖子相同的问题