如何在SQL Server 2014环境下创建一个适用于SQL Server 2008的SSIS包?

4
我们在本地环境中使用SQL Server和SSIS 2014,在生产环境中大部分使用SQL Server 2014,只有SSIS仍然是2008版。
因此,我们正在本地创建SSIS包,但无法将其部署到生产环境,因为SSIS包不向后兼容。
是否可能在本地创建针对SSIS 2008的软件包?如果可以,如何操作?
需要注意的是,SSIS包是在Visual Studio 2008中定义的,因此我不明白它们为什么依赖于SQL Server 2014。

1
只要您使用VS 2008进行编写,它就可以在您的生产环境中运行。也许屏幕截图或其他一些东西可以帮助我这个蠢脑理解您遇到的障碍。 - billinkc
我在这项调查中仍处于相对早期阶段,并且我对SSIS非常陌生,因此这可能是一个“误导”。感谢您确认它应该可以工作 :-) - DaveDev
别误会我,有办法通过让一个2014年的工具接触到它来破坏一个完好无损的2008年的软件包(基本上,如果你在部署时使用2014年程序文件位置中的dtutil而不是2008年的位置,这可能发生在你先在执行部署的机器上安装了2014年的情况下...) - billinkc
你可能真的有所发现。我可以看到一个脚本尝试执行2008年的dtutil,但如果失败了,它会尝试2014年的版本,这可能解释了为什么会生成2014年的包。不幸的是,我找不到任何地方调用这个脚本!嗯...需要进一步调查。 - DaveDev
1
就像我是个天才一样(或者我告诉人们我犯了所有可能在SSIS中犯的愚蠢错误——从我的失败中学习)。SSIS包始终可以被新版本的工具打开,因此,2005将在2016实例上运行,而无需您甚至询问(假设没有自定义/第三方组件)。当版本+组件接触到一个包时,它们会发现它是旧版本,并进行内存升级到当前版本。对于运行,dtexec,这不是问题,因为内存版本被丢弃。对于部署,dtutil,它将部署升级/内存版本。混乱随之而来。 - billinkc
显示剩余2条评论
1个回答

0

SSIS包的格式从SSDT 2012到2013/2014发生了变化。我最近在Go Live之前遇到了这种情况。一位同事使用SQL Server 2012作为部署目标环境,在SSDT 2013中开发了SSIS包。虽然在SSDT 2013中进行开发和执行与SQL Server 2012没有问题,但是该包无法在SQL Server 2012的SSIS目录中部署。SSIS包不向下兼容。至少在SQL Server SSIS目录中的部署方面是如此。

在编辑器中打开dtsx文件并检查“PackageFormatVersion”的值。可能的值包括:

  • VS 2013/2013 = 8
  • VS 2010/2012 = 6

不幸的是,您无法在SSDT 2012或更低版本中打开PackageFormatVersion=8的SSIS包以降级包。当然,您可以找出格式如何改变。我开始这样做,但过了一会儿就放弃了。最好的解决方案是在SSDT 2012中重新开发包。唉!

因此,在开发SSIS包时,您必须注意目标SQL Server版本,然后决定选择正确的SSDT版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接