部署后,SSIS脚本组件不起作用。关于ComponentVersionMismatchError的投诉

时间:2019-04-12 15:33:21

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

带有脚本组件的程序包在SSDT(Visual Studio 2017)上运行良好,将其部署到SQL Server 2016时不会运行。它将引发ComponentVersionMismatchException。

因此,其他软件包也可以正常工作。这是一个带有脚本组件目标的数据流。当我刚开始开发该项目时,我没有将目标从SQL 2017调整为SQL2016。我开发了所有内容,并使其从SSDT运行。我正在使用.ispac文件进行部署。部署后,它将引发ComponentVersionMismatchException。这是我尝试让脚本组件运​​行的内容:

  1. 将目标更改为SQL2016。失败。
  2. 进行较小的更改,并确保重新编译脚本。失败
  3. 确保已选择Visual C#2015。失败了
  4. 复制软件包,然后删除脚本组件。这样成功了。
  5. 在重复项中,只需添加一个新的空脚本组件作为目标即可。再次失败。
  6. 删除数据流任务,并使用空脚本组件进行重建。失败了
  7. 完全从头创建一个包,并使用相同的源和空脚本组件重新创建数据流。失败了
  8. 我尝试完全创建一个新项目,将目标设置为SQL 2016,并创建了一个类似的数据流,只是将表作为源,将空脚本组件作为目标。仍然失败。

我希望针对SQL 2016的全新项目具有不执行任何操作的脚本组件,应该能够在服务器上执行。我现在很失落。

4 个答案:

答案 0 :(得分:1)

尝试直接从Visual Studio部署而不是使用ispac。 它可能类似于: https://feedback.azure.com/forums/908035-sql-server/suggestions/32898370-deploying-single-ssis-package-to-sql-2016-from-ssd

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

鉴于Piotr所说的,并且我已经更新到VS2017的最新版本的VS Shell / SSDT,我尝试安装VS2015的SQL Server数据工具。

Visual Studio 2015能够直接部署到(本地)服务器,并且从VS2015版本部署的程序包不会表现出从VS2017的程序包执行的问题。

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

对于VS2017,这似乎是SSDT中仍未修复的错误。