Andrej Kuklin
Andrej Kuklin

Reputation: 65

Upgrade of custom SSIS components in packages doesn't happen (SSIS 2014->2022)

I’m trying to upgrade my custom SSIS components from SQL Server 2014 to 2022. I’ve incremented the AssemblyVersion, changed the project references to SQL2022 assemblies, recompiled the components and put them into GAC (the old ones are also in GAC). Now I would like my packages to be migrated so that they use the new version when I change the TargetServerVersion in the SSIS project properties as described here.

Unfortunately this doesn’t happen, the version of the component in the .dtsx file stays the same and the component doesn’t work. It does work if I manually increment the version in the .dtsx file, but I’d like to use the official upgrade process, without manual editing of the .dtsx files.

It’s not quite clear what is actually required for upgrade to take place, so I tried all options:

  1. Created an UpgradeMapping.xml (the old, pre-SQL2014 way) and put it under C:\Program Files (x86)\Microsoft SQL Server*160*\DTS\UpgradeMappings

The contents:

<?xml version="1.0" ?>
<Mappings xmlns="http://www.microsoft.com/SqlServer/Dts/UpgradeMapping.xsd">    
    <ExtensionMapping tag="EmergencyExit Task"
                      oldAssemblyStrongName="XXX.EmergencyExit.EmergencyExitTask, XXX.EmergencyExit, Version=3.0.0.0, Culture=neutral, PublicKeyToken=yyyy"
                      newAssemblyStrongName="XXX.EmergencyExit.EmergencyExitTask, XXX.EmergencyExit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=yyyy"
    />
</Mappings>
  1. Created 2 files Extensions2014.xml and Extensions2022.xml and put them respectively under C:\Program Files (x86)\Microsoft SQL Server*120*\DTS\UpgradeMappings and C:\Program Files (x86)\Microsoft SQL Server*160*\DTS\UpgradeMappings

Contents of Extensions2014.xml:

<?xml version="1.0" ?>
<Extensions xmlns="http://www.microsoft.com/SqlServer/Dts/Extensions.xsd">
    <Tasks>
        <Task Identifier="EmergencyExit Task" Model=".NET">
            <CreationName>XXX.EmergencyExit.EmergencyExitTask, XXX.EmergencyExit, Version=3.0.0.0, Culture=neutral, PublicKeyToken=yyyy</CreationName>
        </Task>
    </Tasks>
</Extensions>

Contents of Extensions2022.xml:

<?xml version="1.0" ?>
<Extensions xmlns="http://www.microsoft.com/SqlServer/Dts/Extensions.xsd">
    <Tasks>
        <Task Identifier="EmergencyExit Task" Model=".NET">
            <CreationName>XXX.EmergencyExit.EmergencyExitTask, XXX.EmergencyExit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=yyyy</CreationName>
        </Task>
    </Tasks>
</Extensions>

What am I missing?

I’m using Visual Studio 2019 with the latest version of the SSIS extension.

Upvotes: 2

Views: 536

Answers (1)

Andrej Kuklin
Andrej Kuklin

Reputation: 65

I've found the root of the problem. It works with VS2019, but you need to place extension files under C:\Program Files (x86)\Microsoft SQL Server AND under C:\Program Files\Microsoft SQL Server (although VS2019 is still a 32bit process). You also need the extension files both under Microsoft SQL Server\120 AND under Microsoft SQL Server\160 (the contents differ only by version in the CreationName tag).

The old UpgradeMapping file () seems not to be needed anymore.

Upvotes: 1

Related Questions