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

问题描述 投票:0回答:7

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

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

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

两台计算机上均装有 SQL Server 2005 和 Visual Studio 2005。

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

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

这是什么原因造成的?

sql-server ssis custom-pipeline-component
7个回答
4
投票

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


3
投票

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

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


2
投票

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


2
投票

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


1
投票

在 SQL Server 安装中包含 Client Tools SDKClient Tools Backward Compatibility 解决了我的升级问题。


1
投票

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

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


0
投票

我创建了一个新项目并从服务器导入了一个 SSIS 包。部署包后,我遇到了同样的问题。按照 Imran 上面的建议,通过右键单击解决方案资源管理器中的项目并选择“属性”>“配置”选项卡>“目标服务器版本”来更改目标服务器版本,为我解决了问题。就我而言,SSIS 包设置为 SQL Server 2019,而我的 SQL Server 版本为 2017。

© www.soinside.com 2019 - 2024. All rights reserved.