SSIS deploy package with variables using project parameters using package deployment model - ssis

There is an existing project(say Project1) which I am working on having
project param like
Name - Param_Local_Dir
Value - F:\Test\Company\Process\
In a package(say Package1) this project param is used in the package variables to identify the value
Name - Pkg_Local_Dir
Value - REPLACE( #[$Project::Param_Local_Dir], "Company", "AA")
The project was deployed into SQL Server using project deployment model and it was running with no issues through a scheduled job.
Now I need to deploy the package into the SQL Server as there is some changes(Integration Services Catalog -> project1 - right click -> Deploy Packages)
When I select the package from the package deployment window, it gives following error -
TITLE: SQL Server Integration Services
Warning:
The variables "$Project::Param_Local_Dir" were not found in the variable colletion. The variables might not exist in the correct scope.
Error:
1. The expression for variable "Pkg_Local_Dir" failed evaluation. There was an error in the expression.
We are not in a condition to do the whole project deployemnt again as there are many packages and this is the only package that is changed.
Is there any way this error can be fixed in order to do a package deployment?

Project Deployment mode and Package Deployment are completely different beasts. You cannot refer Project parameters within a Package deployed in Package deployment mode . That is the reason you are getting the errors.
In SSIS 2016 you can deploy single package from your project staying in Project mode, but not in SSIS 2012 or 2014.
In your case I would unload the Project from server, do necessary modifications to the package and deploy the updated Project back.

Related

Execute package task in errorhandling gives error

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

Load package from SQL Server

I used following article to execute SSIS package parallel.https://www.sqlservercentral.com/articles/importing-files-in-parallel-with-ssis. In this article it explained execute a package from a folder location. In my situation I am deploying both packages. I tried following code:
Application app = new Application();
Package pkg = app.LoadFromSqlServer(dtsxPackage, "localhost",null, null, null);
I am getting error
Cannot find folder "Package name"
Package deployment is as follows.
Using "ParallelExecusion.dtsx" I am try to execute the "FileSync.dtsx" package. I am setting the package path as "FileSync\TeamR\FileSync.dtsx"
The code shown is for loading a package that is stored in the SQL Server database named msdb. It will use the binaries in sys.dtspackages90 or sys.ssispackages (table names approximate) but that only works for packages developed and deployed under the Package Deployment Model (2005-2008R2) or projects that are explicitly defined as such for SQL Server 2012+
What your screenshot shows is a Project Deployment Model which is a .ispac deployed to the SSISDB database. While that package is on SQL Server, you do not use the LoadFromSqlServer method. Instead, you're going to use the same-ish methods that the CLR methods in the database use.
CreateSsisServerExecution
Set any Parameter/Property values
Start
Personally, unless I had a strong use case that I needed to control every aspect of the package execution, I'd just use TSQL here (and remove class dependencies in your code) to Execute SSIS Packages

Cannot Add Script Component to Data Flow Task

Cannot add a Script Component to Data Flow Task for an SSIS Package that I am working on.
I am running Visual Studio 2017 and creating an SSIS Package that is targeted for SQL Server 2012
I am trying to drag the Script Component Task from the SSIS Toolbox to the Data Flow Task, I get the error as shown below
TITLE: Microsoft Visual Studio
The component could not be added to the Data Flow task. Could not
initialize the component. There is a potential problem in the
ProvideComponentProperties method.
ADDITIONAL INFORMATION:
Error at Replace Delimiter in File [SSIS.Pipeline]: Failed to create
COM Component Categories Manager due to error 0x80070002 "The system
cannot find the file specified.".
Error at Replace Delimiter in File [ [52]]: The component is missing,
not registered, not upgradeable, or missing required interfaces. The
contact information for this component is "".
Exception from HRESULT: 0xC0048021
(Microsoft.SqlServer.DTSPipelineWrap)
BUTTONS:
OK
The Script Component should be added to the Data Flow Task
Thanks for your suggestions - but I ended up upgrading my license to visual studio 2019 and it worked like a charm
I guess because with this version the SSDT is integrated better
Not really entirely sure what the issue was with Visual Studio 2017 - it could be my install but because VS 2019 didn't work I did not bother with it.

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.

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.