在我们的 QA 虚拟环境中,其中包含多个 SQL Server,我想部署一个通过 Visual Studio 2010 维护的 SSIS 2012 包(ispac,项目部署)。目标 SSIS 服务器是 2012,但工作站上的客户端包括 SQL Server 2014。在工作站上执行 ispac 包并指定在 SQL Server 2012 上部署,部署没有任何错误。但是当在 SSIS 服务器上执行包时,我们会遇到如下错误
“包名称”:错误:包中的版本号不是
有效的。版本号不能大于当前版本
数字。
“包名称”:错误:从节点加载值“8”时出错
“DTS:财产”。
“包名称”:错误:包从版本 8 迁移到
版本 6 失败,错误为 0xC001700A“版本号在
包裹无效。版本号不能大于
当前版本号。”。
我所有的包(.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)部署时,一切都按预期部署和运行。
这是预期的结果吗?或有问题
So what you're experiencing is expected behaviour citation needed. When an SSIS package is opened using the APIs, the package is updated to that APIs version. This allows a V-1 package to run on a Vcurrent server. There were changes to the formats and stuff so there are reasons a 2005 package may not run on a 2014 box but that's the intent. The bits on disk remain unaltered but the in-memory version is what gets updated.
由于部署在 120 文件夹 (SQL Server 2014) 中使用了 ISDeploymentWizard,因此当它看到 2012 版本的 .ispac 时,它所做的第一件事就是将其转换为 2014 格式。因此,该 .ispac 的内存版本需要序列化到 SSISDB 中,并且这些 API 在 2012/2014 年间是相同的。 DeployProject/deploy_project 方法只接受一个二进制对象,它不会对这些位的版本进行任何验证,只是验证它具有正确的形状。
但是,当您执行该包时,API 需要查看其中的实际位并发现,这是一个我不理解的版本。
该 API 的一些示例如何在 SQL Server 2012 中部署现有包
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)