Execute package task in errorhandling gives error - ssis

In my OnError eventhandler I try to execute a (child) package but I get this error:
Error: Error 0x80040154. Failed to create an instance of empty child package. The Distributed Component Object Model (DCOM) configuration or the installation of SQL Server Integration Services, may be corrupted on your machine.
followed by Class not registered
This happens even if it is an empty package I call.
Is it not possible to execute an package in an EventHandler?
What else could lead to this error?
Packages are set as ExecuteOutOfProcess
Using Visual Studio 2019 with microsoft integration services installed.
Edit:
Setting ExecuteOutOfProcess to FALSE made the empty package run.
Another package with 3rdparty-components however failed.
But that is cleaclry caused by that 3party component. Investigating

Reinstalling the Integration Sevrices Add-on solved the problem

Related

SSIS editing a script task and saving it doesn't work

Note: I am not an SSIS developer and have a very limited knowledge on it, so may be missing on very small details, please read carefully.
I have an existing SSIS package which has script task in one of the steps.
I had to update one single value in script task, so I opened it in notepad++ and updated the value and saved it. Now when the scheduled SSIS job runs, it still picks up the old value and not the updated one.
I realized script task is a VB file, so probably would need to re-compile it for the binaries. I read about it and found out, if you open it through VS and save it, VS automatically compiles it and you don't have to do anything further. I can be wrong here.
I can't do project deployment on the server, so I would just need the updated package file to replace it on the server.(I am taking this updated package file from the Visual studio project that I created to edit the SSIS package. I am not sure, if there is another way to get the package or even if this is a right package.
Now the problem is,
when I updated the old package using notepad++, it didn't throw any error when it was running through scheduled job, but it took the old value
Now when I am putting the new package that I edited using Visual studio, it throws below error
Executed as user: sampleUser(nameupdated). Microsoft (R) SQL Server Execute Package Utility Version 13.0.5026.0 for 32-bit Copyright (C) 2016 Microsoft. All rights reserved. Started: 5:08:09 PM Error: 2021-11-02 17:08:10.83 Code: 0xC0016016 Source: OraclePackage Description: Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available. End Error Error: 2021-11-02 17:08:11.26 Code: 0x00000005 Source: Rename files in archive folder to _yyyymmddhhmm Rename files in archive folder to _yyyymmddhhmm Description: Failed to migrate scripts contained in the package to the VSTA 14.0 format. Move the scripts to a new Script task. End Error Error: 2021-11-02 17:08:14.19 Code: 0x00000005 Source: Script Task Script Task Description: Failed to migrate scripts contained in the package to the VSTA 14.0 format. Move the scripts to a new Script task. End Error Error: 2021-11-02 17:08:17.17 Code: 0x00000001 Source: Script Task Description: Exception has been thrown by the target of an invocation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 5:08:09 PM Finished: 5:08:17 PM Elapsed: 7.25 seconds. The package execution failed. The step failed.
I read about this error and found that package's security level can cause this issue, so update the protection level of the package from "EncryptSensitiveWithUserKey" to "DontSaveSensitive"
Now when I am running the project I get below error
Executed as user: sampleuser(nameUpdated). Microsoft (R) SQL Server Execute Package Utility Version 13.0.5026.0 for 32-bit Copyright (C) 2016 Microsoft. All rights reserved. Started: 5:31:44 PM Error: 2021-11-02 17:31:53.93 Code: 0x00000001 Source: Script Task Description: Exception has been thrown by the target of an invocation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 5:31:44 PM Finished: 5:31:53 PM Elapsed: 9.047 seconds. The package execution failed. The step failed.
Please let me know if there is another way to edit the script task directly and compile it in place so that it takes the updated values else, if there is something else I can do.
Thanks in advance.
I found a solution(more of an error or less knowledge from my side actually)
Updating the security from "EncryptSensitiveWithUserKey" to "DontSaveSensitive"
When you open an existing SSIS package in Visual studio, the read and write variables are wiped out from script task for some reason. Reassigning them resolved the problem.
How did I find out if that was the problem, I put some exception handling in the script task to notify me of further issues.
Hope this helps to someone in the similar problem.

Custom SSIS component created for SQL Server 2014 not working in SQL Server 2016

We got a couple of custom SSIS components which were created targeting SSIS for SQL Server 2014.
We are now migrating our dtsx packages to SSIS for SQL Server 2016.
I have modified the custom SSIS components such that assembly references to DTS assemblies have been given the property SpecificVersion=False.
I'm using the DTS.Runtime.Application.Upgrade method to upgrade my packages in a console app. However the packages which have these custom components are throwing the below error.
What else should I be doing?
Error in DFT (SSIS.Pipeline) The "" failed to cache the component metadata object and returned error code 0x80131600.
Error in DFT (SSIS.Pipeline) Component , clsid {4F885D04-B578-47B7-94A0-DE9C7DA25EE2} failed to initialize due to error 0xC0047067 "The "%1" failed to cache the component metadata object and returned error code 0x%2!8.8X!.".
Error in DFT ( [2]) The component is missing, not registered, not upgradeable, or missing required interfaces. The contact information for this component is "".
Error in DFT (SSIS.Pipeline) The component metadata for "" could not be upgraded to the newer version of the component. The PerformUpgrade method failed.
Error in Package.dtsx The loading of the package has failed.
You get to rebuild the component against the 2016 SSIS binaries, redeploy it to the GAC and probably change the references in your packages to use the new components (unless the 2014->2016 migration process is entirely different than 2005->2008 and 2008->2012 which is when I stopped building custom components).
The reason for this is that the DLLs for SSIS are strongly signed/versioned and that signature changes between editions of the project so the 2014 component you built is against the 130 version of TxPipeline dll and it now needs to reference 140 to be successful.

Unable to cast COM object of type 'System._COMObject' to interface type

I have 3 SSIS packages. Two out of the 3 SSIS packages work perfectly, the third. Which is a copy of the 2nd one, except changing connection strings keeps throwing the problem:
Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{D4E5AF42-7999-473C-8082-6EFC676953C4}' failed due to the following error: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)).
It has been doing this ever since I copied the package over. I have followed through online guides and run the regsvr32 dts.dll and this said it was successful but nothing has changed. I still get the error, why is this?
The SSIS package seems to validate my containers, it takes a long time to do this compared to the other two and then fails later on in the validation throwing the above error message.
You can't just copy the package, but you need additionally to change the name and generate new GUID (which identifies the COM object) for this package. Check this MSDN article for more info.
Here is the workaround: Solution Explorer -> right click project ->properties->debugging->Run64bitRuntime->set to false.
I hope it helps others. The solution worked for me:
I registered the assembly using the gacutil.exe. My SSIS project target server version was SQL 2012. So, I was using the DTSPipelineWrap.dll version 11.0. I opened the "Developer Command Prompt for VS2015" in Administrator mode, then typed the following command: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe /i "C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.DTSPipelineWrap.dll"
Then from my SSIS script task, References--> I removed the existing DTSPipelineWrap which was using the assembly from the location "C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.DTSPipelineWrap.dll". Then in the References folder, right click-->Add Reference-->Browse find the assembly from the location "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SQLServer.DTSPipelineWrap.dll"
Click Ok. Rebuild the code and executed the package. It has worked for me.
In my case this is was a validation overload/timeout, the package contained references to hundreds of tables.
Opening the offending data flow forced re-validation and cleared the error.
Project --> Properties --> Configuration Properties --> Debugging
and then change Run64BitRuntime to False under Debug Options
In case this might help someone: I got this error due to timeout issues caused by a poorly optimised query. There was nothing inherently wrong with the SSIS package and it ran fine once i fixed the problem in the DB Source.

DTExec: The package execution returned DTSER_FAILURE (1) in SSIS package execution

I've got this question within a project in ssis. I had to divide the original project into different packages because this was to big and sometimes it could provoke some problems with the memory.
So, in order to link the different packages I'm using the "Execute Package Task" to refer one to each other.
If I execute the package directly from SSIS it works perfect, there's not problem.
But if I use a scheduler to program the time of execution I'm getting this error message:
Error: 2015-09-22 14:54:37.98 Code: 0xC00220E6 Source: Execute Package
Task Description: There is no project to reference. End Error Error:
2015-09-22 14:54:37.99 Code: 0xC0024107 Source: Execute Package Task
Description: There were errors during task validation. End Error
DTExec: The package execution returned DTSER_FAILURE (1).
I wonder what can be happening with the project and its execution.
Regards
I'm not sure what scheduler you are using, or how it's configured, but you can debug your way through this by simulating the scheduler with DTExec. It sounds like you've crossed your Setup and Execution Method (see below for those definitions).
Here's the summary.
Option 1: For the Setup, use Project References and for the Execution Method, use Project/Package.
Option 2: For the Setup, for each child package, use External References and for Execution Method, use File.
(It sounds like you're using a combination of Project References and File, which in turn sends the There is no project to reference error off of the child packages.)
Option 1
Setup
Open your parent package in SSDT, and then double click a child package. It should look like this:
Execution Method
This setting means you need to execute the package via the Project/Package method via DTExec. So build your project - this generates an ispac file. And to execute via dtexec, it would look like:
dtexec /Proj Path\To\MyProject.ispac /Pack Path\To\The\ParentPackage.dtsx
Note: If you specify the dtsproj file instead of the ispac file in the /Proj parameter, you will receive a File contains corrupted data error!
Option 2
Setup
Open your parent package in SSDT, and then double click a child package. Change it to look like this:
This is done by
1. Changing the Reference Type to External Reference
2. Changing the Location to File system (SQL Server is another option)
3. Select <New connection...> to create a new file connection for the child package to run (or a SQL server connection)
Execution Method
This setting means you can now use the File method, which is likely the way you're attempting to execute the package.
dtexec /f Path\To\My\ParentPackage.dtsx

SSIS Main Package throwing Error : Package Failed Validation From Execute Package Task

i have a Main Package and 2 child packages(Load and Export). i have both child packages on the server in shared folder. when i execute Main Package its giving me the following Error for one of the Child package.
Error: Error 0xC0012050 while loading package file "\mhfile02\DIRFILEDEV\CHG77253\SSIS Packages\AaeAutoenrollee_Load.dtsx". Package failed validation from the ExecutePackage task. The package cannot run. .
Can anybody tell me what could be wrong?
Thanks
Are you running the package via SQL Server Agent?
Try running the child packages individually, it may be throwing other errors. If the package runs without error, the problem is probably on the Main package settings.
Some questions that may help you?
1. when you loaded the packages to the server, did you set any Protection Level (eg encrypt sensitive data with key, user key, etc?) setting these can make a package fail loading when run via SQL Server Agent
2. Try adding /msdb/ to the path of the child package.
If you are connecting in the child package to an Excel file,
and you set on the child solution property page
Under -
"Configuration Propeties"
"Debugging"
the variable "Run64BitRunTime" = False
You have to do it also on the Parent Package!
This error message means that your child package will not pass the validation. Check your child package to see if there's any task inside that does not pass the validation (a red cross appears beside it).
Maybe you have something being dynamically created that is used in such task (like constructing the connection string at runtime for some connection manager). Try set this task's DelayValidation property to True.
From one day to another, I got this error in Visual Studio / SSDT too (VS 2013, with SSIS 2014). Note: I have project deployment model, not package deployment.
I have ProtectionLevel = EncryptSensitiveWithPassword.
In the master package, on all package execution tasks, I had to retype the password for the sub-packages again. After that, it worked again. I guess the master package had some corruption, no idea why.
Greetings,
Roli
If you are connecting in the child package to an Excel file, then set DelayValidation = False on the child package excel connection manager.