SSIS自定义数据流组件错误的原因 - 无法升级

时间:2009-07-28 14:34:22

标签: sql-server ssis custom-pipeline-component

我有一个非常简单的组件,它修剪管道中(读/写)字符串的所有前导和尾随空格。据我所知,我的开发机器上只有一个这个dll的二进制文件。我将它转移到另一台开发机器并在GAC中注册,但是当我打开一个包我复制到第二台机器时,我收到了这个警告:

错误1验证错误。数据流任务:DTS.Pipeline:“组件”TrimColumnsComponent“(1909)”的组件元数据无法升级到组件的较新版本。 PerformUpgrade方法失败。 LD_CXSUM.dtsx 0 0

我在工具箱中有组件,我可以将另一个组件拖到数据流画布上,它似乎没有任何问题。

这是两台计算机上的SQL Server 2005和Visual Studio 2005。

在第二台机器上,我可以从头开始创建一个包,它将加载到构建组件的机器上(但图标是标准用户组件图标,与第二台机器上的图标相同)。如果我在构建计算机上从头开始创建一个包,它具有正确的图标,但它在非构建计算机上提供了升级消息。这些文件在组件目录中是相同的,它们具有相同的组件类ID,并且它们在GAC中注册。

我通过检查XML并在构建机器和非构建机器上创建的包中手动检查了dtsx文件,类ID和公钥在机器之间是相同的。

导致这种情况的原因是什么?

6 个答案:

答案 0 :(得分:3)

通常这意味着在保存包之后组件已升级,因此版本号错误。不幸的是,您必须重新添加该组件1

您可以将软件包保存为新版本并尝试迁移该软件包。这可以解决被调用自动升级的问题(并随后失败)。

答案 1 :(得分:1)

您是否100%肯定GAC中组件的副本与Program Files \ Microsoft SQL Server \ 90 \ DTS \ PipelineComponents文件夹中的副本匹配? GAC副本在运行时使用,并且VS IDE使用PipelineComponents下的副本。如果您在x64计算机上运行,​​我会确保将其复制到常规Program Files文件夹和x86文件夹下的PipelineComponents文件夹中。

答案 2 :(得分:1)

我遇到了同样的问题,对我来说,围绕这个问题的方法是部署整个项目而不是单个软件包。这解决了问题并使包正常运行。

答案 3 :(得分:1)

我遇到了同样的问题,我的解决方案与@AppleG的解决方案相同。该问题是通过部署一个软件包而不是整个项目而产生的。该项目是由另一位开发人员较早地部署的,很可能是使用稍微不同版本的Visual Studio或“部署向导”来部署的。然后我以后只从VS部署了一个软件包。

最后,再次部署整个项目解决了该问题。

答案 4 :(得分:0)

在SQL Server安装中包含客户端工具SDK 客户端工具向后兼容性解决了我的升级问题。

答案 5 :(得分:0)

我遇到了同样的问题,这是目标服务器版本设置错误。您可以通过在解决方案资源管理器中右键单击该项目并选择“属性”来进行检查。转到“配置”属性,“常规”,将显示TargetServerVersion选项。您可以将其更改为目标。