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?
7条答案
按热度按时间voase2hg1#
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.
8tntrjer2#
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).
kuhbmx9i3#
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.
utugiqy64#
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.
6ovsh4lw5#
Including Client Tools SDK and Client Tools Backward Compatability in the SQL Server installation solved the upgrading problem for me.
uplii1fm6#
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.
cbjzeqam7#
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.