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

发布于 2024-07-29 05:54:37 字数 636 浏览 1 评论 0原文

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

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

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

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

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

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

什么会导致这种情况?

I have a very simple component which trims all leading and trailing spaces from (read/write) strings in a pipeline. As far as I can see, I only have one binary of this dll on my development machine. I am transferring it to another development machine and registering it in the GAC, but when I open a package I copied to the second machine, I get this warning:

Error 1 Validation error. Data Flow Task: DTS.Pipeline: The component metadata for "component "TrimColumnsComponent" (1909)" could not be upgraded to the newer version of the component. The PerformUpgrade method failed. LD_CXSUM.dtsx 0 0

I have the component in the toolbox, and I can drag another one onto the dataflow canvas and it doesn't appear to have any problem.

This is SQL Server 2005 and Visual Studio 2005 on both machines.

On the second machine, I can create a package from scratch and it will load on the machine that built the component (but the icon is the standard user component icon, the same as it was on the second machine). If I create a package from scratch on the build machine, it has the correct icon, but it gives the upgrade message on the non-build machine. The files are identical in the components directory, they have the same component class id and they are registered in the GAC.

I have checked the dtsx files manually by inspecting the XML and in packages created on the build machine and the non-build machine, the class id and public key are identical between machines.

What can cause this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

三生池水覆流年 2024-08-05 05:54:37

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

I had the same issue, it was a wrong set of target server version. You can check it by right clicking the project in the Solution Explorer and selecting Properties. Go to Configuration properties, General, and the TargetServerVersion option will be displayed. You can changed this to your target.

祁梦 2024-08-05 05:54:37

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

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

Generally this means that the component was upgraded after the package was saved, and so it's at the wrong version number. You'll have to re-add the component, unfortunately 1.

You may be able to save the package as a new version and try migrating that. This may solve the problem of the automatic upgrade being called (and subsequently failing).

月依秋水 2024-08-05 05:54:37

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

Are you 100% positive the copy of the component in the GAC matches the copy in the Program Files\Microsoft SQL Server\90\DTS\PipelineComponents folder? The GAC copy is used at runtime, and the copy under PipelineComponents is used by the VS IDE. If you are running on an x64 machine, I'd make sure you copy it to the PipelineComponents folder under both the regular Program Files folder and the x86 folder.

双马尾 2024-08-05 05:54:37

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

I had the same issue, the way round this for me was to deploy the whole project rather than an individual package. This resolved the issue and enabled the package to run as normal.

唠甜嗑 2024-08-05 05:54:37

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

Including Client Tools SDK and Client Tools Backward Compatability in the SQL Server installation solved the upgrading problem for me.

一直在等你来 2024-08-05 05:54:37

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

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

I had the same problem and my solution is the same as the one from @AppleG. The issue was generated by deploying one single package rather than the whole project. The project was deployed earlier by another developer, most probably with a slightly different version of Visual Studio or the Deployment Wizard. Then I deployed later only one package from my VS.

In conclusion, deploying the whole project again resolved the issue.

迷迭香的记忆 2024-08-05 05:54:37

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

I created a new Project and imported a SSIS package from a server. After deploying the package, I had the same issue. Changing the Target Server version as Imran suggested above by right clicking the project in the Solution Explorer and selecting Properties > Configuration Tab > Target Server Version, fixed the issue for me. In my Case the SSIS package was set to SQL Server 2019 whilst my SQL Server is version 2017.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文