2016-08-04 119 views
-1

我环顾四周,还没有发现任何与此相关的问题。在SQL Server 2016中运行SSIS 2012脚本

我在一个团队中工作,该团队需要在SQL Server 2012,2014和2016上运行ETL。此ETL仅在相同服务器实例内的数据库之间移动信息,因此根本不会与外部服务器通信。我有一个旧的,但简单的脚本,最初是为SSIS 2008构建的,但曾升级到SSIS 2012.当我们运行我们的配置工具来设置我们的ETL作业代理时,我可以使SSIS 2012脚本在SQL上成功运行Server 2012以及SQL Server 2014中,因为SQL Server会自动将脚本迁移到2014年,但它无法在SQL Server 2016上配置或运行。

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

我们理想情况下只希望部署1个源脚本,因此我们不会尝试在多个不同的解决方案上进行相同的更改以支持3个服务器版本。由于微软将SSDT2016在SSIS中向后兼容到了SQL Server 2012,所以我们希望这意味着我们可以为全部3使用相同的2012脚本。

为什么在2014/2016文件相同的情况下,脚本将成功迁移并在SQL Server 2014上运行,而不是在SQL Server 2016上运行? SQL Server 2016可以不像SQL Server 2014那样转换SSIS 2012文件吗?

+1

没有看到脚本,很难说。 – Gareth

+0

你想从哪个客户端运行?该客户与哪个服务器通话?我有一个更新的SQL服务器,我根本无法使用旧版本的SSIS。它只是在各地崩溃。 – durbnpoisn

+0

@durbnpoisn ETL脚本只是在同一服务器实例内的不同数据库之间移动信息,因此它永远不会与外部服务器实例交谈。 – mcol2007

回答

0

原来,通过既DTS内下方所示TargetServerVersion标签简单地增加:在SSIS 2012项目文件目标数据的标签,我们能够拿到剧本迁移,并在所有3的SQL Server版本上运行:

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

相关问题