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

SSIS Script Component not working when deployed. Complains about ComponentVersionMismatchError

带有脚本组件的包 运行 在 SSDT (Visual Studio 2017) 上正常 运行 在部署到 SQL Server 2016 时不会 运行。它抛出一个ComponentVersionMismatchException.

所以,其他包工作正常。这个有一个带有脚本组件目标的数据流。刚开始开发项目的时候,我还没有把目标从SQL 2017 调到SQL 2016。我开发了所有东西,从SSDT 拿到了运行。我正在使用 .ispac 文件进行部署。部署时,它会抛出 ComponentVersionMismatchException。这是我试图将脚本组件添加到 运行 的方法:

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

我希望一个以 SQL 2016 年为目标并带有不执行任何操作的脚本组件的全新项目应该能够在服务器上执行。我现在很迷茫。

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

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

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

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

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

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

看起来这是 VS2017 的 SSDT 中一个尚未修复的错误。