代码之家  ›  专栏  ›  技术社区  ›  Cade Roux

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

  •  5
  • Cade Roux  · 技术社区  · 15 年前

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

    错误1验证错误。数据流任务:dts.pipeline:无法将“component”trimColumnsComponent“(1909)”的组件元数据升级到组件的较新版本。PerformUpgrade方法失败。ld_x和.dtsx 0 0

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

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

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

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

    什么会导致这种情况?

    5 回复  |  直到 6 年前
        1
  •  3
  •   Eric    15 年前

    一般来说,这意味着组件是在保存包之后升级的,所以它的版本号是错误的。很遗憾,您必须重新添加组件 1 .

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

        2
  •  1
  •   John Welch    15 年前

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

        3
  •  1
  •   AppleG    6 年前

    我也有同样的问题,解决这个问题的方法是部署整个项目,而不是一个单独的包。这解决了问题,使包能够正常运行。

        4
  •  1
  •   Zsombor Zsuffa    6 年前

    我有同样的问题,我的解决方案和@appleg的一样。该问题是通过部署单个包而不是整个项目生成的。该项目是由另一个开发人员早期部署的,很可能使用了稍有不同版本的Visual Studio或部署向导。后来,我只部署了我的vs.

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

        5
  •  0
  •   niklasolsn    10 年前

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