6

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

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

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

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

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

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

什么会导致这种情况?

4

6 回答 6

4

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

于 2019-11-14T16:21:30.547 回答
3

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

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

于 2009-07-28T14:53:10.093 回答
2

我有同样的问题,对我来说解决这个问题的方法是部署整个项目而不是单个包。这解决了问题并使程序包能够正常运行。

于 2017-12-12T14:55:50.487 回答
1

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

于 2009-08-10T00:18:35.200 回答
1

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

于 2014-03-03T09:39:48.440 回答
1

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

总之,部署整个项目再次解决了这个问题。

于 2018-10-26T19:38:38.427 回答