运行 SQL Server 2016 中的 SSIS 2012 脚本

Run SSIS 2012 Script in SQL Server 2016

我环顾四周,到目前为止还没有发现与此问题相关的任何内容。

我所在的团队需要在 SQL 服务器 2012、2014 和 2016 上安装我们的 ETL 运行。此 ETL 仅在同一服务器实例中的数据库中移动信息,因此它赢得了' 与外部服务器通信。我有一个旧的但简单的脚本,最初是为 SSIS 2008 构建的,但已经升级到 SSIS 2012。当我们 运行 我们的配置工具设置我们的 ETL 作业代理时,我可以得到那个 SSIS 2012 脚本到运行 在 SQL Server 2012 以及 SQL Server 2014 上成功,因为 SQL 服务器自动将脚本迁移到 2014,但是它无法配置或 运行 在 SQL 服务器 2016 上。

让我感到困惑的是,如果我在部署之前进入并进行转换,当我实际打开为 2014 年和 2016 年转换的 dtsx 文件并进行比较时,它们之间没有任何区别,而比较两者到 SSIS 2012 文件确实显示出不少差异,但其中大部分是参考更改(例如从 SSIS.Package.3 到 Microsoft.Package)。

理想情况下,我们希望只部署 1 个源脚本,这样我们就不会尝试在多个不同的解决方案中进行相同的更改以支持 3 个服务器版本。由于 Microsoft 使他们的 SSDT2016 在 SSIS 中向后兼容 SQL Server 2012,我们希望这意味着我们也可以对所有 3 个服务器使用相同的 2012 脚本。

当 2014/2016 文件相同时,为什么脚本会在 SQL Server 2014 上成功迁移和 运行,而不是 SQL Server 2016? SQL Server 2016 不能像 SQL Server 2014 那样转换 SSIS 2012 文件吗?

事实证明,只需在 SSIS 2012 项目文件的两个 DTS:ObjectData 标签中添加如下所示的 TargetServerVersion 标签,我们就能够让脚本迁移并 运行 在所有 3 SQL 服务器版本:

<DTS:ObjectData> <InnerObject> <!--Preexisting tags for other parameters--> <TargetServerVersion Type="3" Value="110" /> </InnerObject> </DTS:ObjectData>