4

具有在 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,并创建了一个类似的数据流,只是将表作为源,将空脚本组件作为目标。还是失败了。

我希望一个针对 SQL 2016 的全新项目,其脚本组件不执行任何操作,应该能够在服务器上执行。在这一点上,我很迷茫。

4

4 回答 4

1

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

于 2019-04-12T23:16:41.930 回答
0

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

于 2019-04-12T21:02:50.987 回答
0

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

于 2019-04-14T22:09:52.347 回答
0

鉴于 Piotr 所说的并且我已经更新到 VS2017 的最新版本的 VS shell/SSDT,我尝试为 VS2015 安装 SQL Server Data Tools。

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

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

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

于 2019-04-22T15:24:26.457 回答