sql-server – 部署升级的SSIS包

在包含多个SQL服务器的QA虚拟环境中,我想部署通过Visual Studio 2010维护的SSIS 2012包(ispac,项目部署).目标SSIS服务器是2012,但工作站上的客户端包括SQL Server 2014.在工作站上执行ispac包并指定在SQL Server 2012上部署,部署没有任何错误.但是当在SSIS服务器上执行包时,我们会收到诸如此类的错误

“Package Name” : Error: The version number in the package is not
valid. The version number cannot be greater than current version
number.

“Package Name” : Error: Error loading value “8” from node
“DTS:Property”.

“Package Name” : Error: Package migration from version 8 to
version 6 failed with error 0xC001700A “The version number in the
package is not valid. The version number cannot be greater than
current version number.”.

我的所有包(.dtsx)都有

 <DTS:Property DTS:Name="PackageFormatVersion">6</DTS:Property>

以及清单

<SSIS:Property SSIS:Name="PackageFormatVersion">6</SSIS:Property>

看起来SQL 2014客户端或工作站将我的软件包升级到V8,即使我的目标服务器是V6.
当我直接从SQL 2012服务器(没有SQL 2014)部署时,所有内容都按预期部署和运行.
这是预期的结果吗?或者问题

最佳答案 所以你所经历的是需要预期的行为引用.使用API​​打开SSIS包时,包将更新为该API版本.这允许V-1包在Vcurrent服务器上运行.格式和内容发生了变化,因此有一些原因导致2005套餐可能无法在2014年的盒子上运行,但这是意图.磁盘上的位保持不变,但内存中的版本是更新的.

由于部署在120文件夹(SQL Server 2014)中使用了ISDeploymentWizard,因此当它看到2012版本的.ispac时,它首先将其转换为2014格式.因此,此.ispac的内存中版本需要序列化到SSISDB中,并且这些API在2012/2014之间是相同的. DeployProject / deploy_project方法只接受二进制对象,它不会对这些位的版本进行任何验证,只是它具有正确的形状.

但是,当你去执行包时,就是当API需要查看那里的实际位并发现时,这是一个我不明白的版本.

关于How to deploy an existing package in SQL Server 2012上的API的一些示例

点赞