在我们的QA虚拟环境中,它包含多个SQL服务器,我想部署通过Visual Studio 2010维护的SSIS 2012包(ispac,项目部署)。目标SSIS服务器是2012,但工作站上的客户端包含SQL服务器通过在工作站上执行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)部署时,所有内容都按预期部署和运行。 这是预期的结果吗?或问题
答案 0 :(得分:1)
所以你所经历的是预期的行为 citation needed 。使用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需要查看那里的实际位并发现时,这是我不理解的版本。
上查看API的一些示例答案 1 :(得分:1)
我能够解决这个问题。我们遇到的问题是服务器安装了SQL Server 2012和SQL Server 2014。我正在尝试将软件包安装到SQL 2012实例,但即使您使用VS 2010 Shell开发SSIS软件包,当您在文件系统中运行.ispac文件时,它也会从C:中启动ISDeploymentWizard.exe。程序文件(x86)\ Microsoft SQL Server \ 120 \ DTS \ Binn \ location。这导致程序包自动上转换为版本8,因此每次在SQL Server上执行程序包时,您都会收到&#34;加载值时出错&#34; 8&#34;来自节点&#34; DTS:Property&#34;错误。
要解决,只需执行以下操作: 如果您要将程序包部署到SQL Server 2012,请在此位置运行可执行文件:C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DTS \ Binn \ ISDeploymentWizard.exe
如果您要将软件包部署到SQL Server 2014,请在此位置运行可执行文件:C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DTS \ Binn \ ISDeploymentWizard.exe
然后正常按照向导安装软件包。