SSIS:脚本任务 (vs15) 在 sql 服务器 2014 上部署时不起作用

SSIS: script task (vs15) not work when deploy on sql server 2014

错误:

There was an exception while loading Script Task from XML: System.Exception: The Script Task uses version 14.0 script that is not supported in this release of Integration Services. To run the package, use the Script Task to create a new VSTA script. In most cases, scripts are converted automatically to use a supported version, when you open a SQL Server Integration Services package in %SQL_PRODUCT_SHORT_NAME% Integration Services. at Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj, IDTSInfoEvents events)

我完全按照它说的做,但没有帮助。

有什么解决办法吗?

这对我有用:

  1. 为 Visual Studio 2013 安装 SSDT-BI。
  2. 在 Visual Studio 2015 年打开您的解决方案。
  3. Select 您在解决方案资源管理器中的 SSIS 项目。
  4. 在项目菜单中 select 属性。
  5. 在 属性 页面对话框中 select 配置属性 -> 常规
  6. 在部署目标版本下将目标服务器版本更改为 "SQL Server 2014."
  7. 清理并重建解决方案并重新部署。

在SSDT的修订版(现在是14.0.61x)中,有一个修复。

  1. 安装新版本。 (SSDT For download)

  2. 右键单击项目 > 属性 > 配置属性 > 常规 > TargetServerVersion - 更新到 SQL Server 2014 > 重新部署。

虽然这个问题有点过时了,但我在目标服务器上遇到了同样的错误,只是上下文略有不同:

  1. 创建了一个针对 SQL Server 2014
  2. 的 SSIS 包
  3. 添加脚本任务
  4. 将其部署到 SQL Server 2014
  5. 包验证失败 "The Script Task uses version 15.0 script that is not supported in this release of Integration Services..."

我使用了以下环境进行开发和部署:

当前 SSDT 版本 17.1 支持目标 SQL Server 2014 - SQL Server vNext。如前所述,当前版本的 SSDT 通过在项目配置中提供目标选项解决了问题中的问题。

我注意到上面的 SSIS 项目如果部署在目标服务器上:

  1. VS 2015(Select SSIS 项目 -> 右键单击​​ -> Select 部署
  2. SQL Server 2014 SSIS 部署向导(可能仅当您安装了本地实例时可用;在 Microsoft SQL Server 2014 Windows 开始菜单)

如果您尝试使用 SQL Server Management Studio v17.1 版本的 SSIS 部署向导 进行部署,部署的包失败。部署的脚本任务部署为 SQL Server 2014 不支持的版本 15.0。

如果我使用 SSIS 部署向导Microsoft SQL Server vNext CTP2.0 Windows 开始菜单,可能是通过安装 SSMS 17.1 添加的,部署的包脚本任务失败并出现相同的错误。

总结:

  1. 最新的 SSDT v17.1 for VS2015 通过提供有针对性的服务器配置选项解决了上述问题
  2. 需要部署到Visual Studio 2015
  3. 可以使用目标服务器版本的 SSIS 部署向导
  4. 进行部署
  5. 如果使用最新的 SSMS v17.1 和内置 SSIS 部署向导,SSIS 包脚本任务将无法在目标服务器上升级到 SQL服务器2017版本

也许这是设计使然,但它非常混乱,让我措手不及。为了以防万一这是一个错误,我提交了 bug report.