SSIS C# script is not compatible

2019-02-28 20:24发布

问题:

I've recently taken over a SSIS ETL based process and due to some licencing issues I had to upgraded from Data Tools 2013 to 2015. Most of the project survived the upgrade and runs well. However, in two packages I have a very simple C# method (Script Transformation) to parse some of the data which causes some issue.

Currently the deployment is completed by using "build" (not the newer development method via the SSIS catalog) and the SQL SERVER Job's step points directly to dtsx file.

The job was created in a SQL SERVER 2014 which schedule the ETL in steps. The server has a 64 bits configuration.

I have tried to change the SSIS project property "Run64BitRuntime" to False and force the failing step to use 32 Bit runtime. In addition, I also tried to re-create the component with the same configuration but both did not work.

The odd part is that when I run the package from SSIS it finishes successfully but the job crushes and throw the following error message:

*"decode" is the name of transformation script component

Message ... Started: 11:32:30 PM Error: 2015-12-12 23:32:31.26 Code: 0xC0047062 Source: stg stg (decode [2]) Description: Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException: The version of decode is not compatible with this version of the DataFlow. [[The version or pipeline version or both for the specified component is higher than the current version. This package was probably created on a new version of DTS or the component than is installed on the current PC.]] at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100 wrapper, Int32 lPipelineVersion) End Error Error: 2015-12-12 23:32:31.26 Code: 0xC004801F Source: stg stg (SSIS.Pipeline) Description: The component metadata for "decode" could not be upgraded to the newer version of the component. The PerformUpgrade method failed. End Error Error: 2015-12-12 23:32:31.28 Code: 0xC004801F Source: stg SSIS.Pipeline Description: The component metadata for "decode, clsid {33D831DE-5DCF-48F0-B431-4D327B9E785D}" could not be upgraded to the newer version of the component. The PerformUpgrade method failed. End Error Error: 2015-12-12 23:32:31.28 Code: 0xC0048021 Source: stg decode [2] Description: The component is missing, not registered, not upgradeable, or missing required interfaces. The contact information for this component is "Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an "income" column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;9". End Error Error: 2015-12-12 23:32:31.28 Code: 0xC0047017 Source: stg SSIS.Pipeline Description: decode failed validation and returned error code 0xC0048021. End Error Error: 2015-12-12 23:32:31.28 Code: 0xC004700C Source: stg SSIS.Pipeline Description: One or more component failed validation. End Error Error: 2015-12-12 23:32:31.28 Code: 0xC0024107 Source: stg Description: There were errors during task validation....

回答1:

I had faced the same problem "Error Code: 0xC0048021" and solved it.

I installed this version of SSDT from here https://msdn.microsoft.com/en-us/mt429383

Then, in the SSDT solution explorer right click the Project,go to the Properties --> Configuration Properties --> TargetServerVersion = SQL SERVER 2014

Then, in the SSDT solution explorer right click the Project, go to the Properties --> Configuration Properties --> Debugging --> Run64BitRuntime = False

Referring to this link http://blogs.msdn.com/b/ssis/archive/2016/03/03/what-s-new-for-ssis-2016-rc0.aspx



回答2:

I tried to update the only elelment which I haven't touched - SQL Server 2014, but with no impact. Eventually I decided to take full ownership of process and worked around it by pushing down the logic to the database.