I have an SSIS package with protection level - EncryptSensitiveWithPassword and I can execute this package with in the BIDS.
While trying to deploy to file system using the Package Deployment Wizard I receive the error
The protection level of the package requires a password but the
package password property is empty
Where should I set this password? (In BIDS in the designer I have set this password and while trying to open the project it even asks me for the password) So for deployment is there a another property to set?
This error is generally caused due to the property PackagePassword being empty in your configuration. Kindly check it and if it's not set, set it.
Also change the protection level to DontSaveSensitive after opening the package using the password. Then add the packages to your solution and once you are done, make the protection level as SaveSensitiveWithPassword.
Try deploying your package with these settings.
Reference:Securing your SSIS Packages
As per the answer by user2339071, if you don't have any passwords in your connections (i.e. you use windows trusted security) then you don't actually need a password.
But, assuming you do... (perhaps you could calrify in the original question):
My understanding is that the package password is basically specified at runtime, not deployment time.
When your DTSX file exists in the file system (after deploying it or copying it there directly), then you need to execute it somehow and that's where you specify the package password.
For example if you use SQL Agent to run your package you will find a field in the job to enter that package password. If you use DTEXEC.EXE directly, there is a switch in there for your package password also.
Personally I don't use the package deployment wizard, I just copy the DTSX file to the target file location.
Set or change the protection level of the package or packages by using a command similar to the one of the following examples:
The following command sets the ProtectionLevel property of an individual package in the file system to level 2, "Encrypt sensitive with password", with the password, "strongpassword":
dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword
The following command sets the ProtectionLevel property of all packages in a particular folder in the file system to level 2, "Encrypt sensitive with password", with the password, "strongpassword":
for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword
If you use a similar command in a batch file, enter the file placeholder, "%f", as "%%f" in the batch file.
You can also easily set the package password by going into the 'Package Explorer' then right click on the package to go into the properties and set your protection level there.
Related
I have a application (. Exe) file,
At the time of running, it is asking the password to process.
My task is to run that exe file using SSIS package and pass the static password at the runtime.
Kindly help me to resolve my issue.
It is a matter of making the Arguments as an expression. In that expression you can pass the entire command line string including the password. This when you expose it via Package Configuration, it can then be made dynamic. Here is a link that shows how a SQL Server Package is used to zip a file with password which you can use to tweak for your package - SSIS: How to Compress/Zip your file using 7-Zip?
I have a master SSIS package that calls child packages that have ProtectionLevel = EncryptSensitiveWithPassword and a password. When the master tries to to execute a child package, I am prompted for the child package password.
The child packages are in a Sequence Container. Within that definition, there is a "Package Password" property, and I have set that, but it still prompts for the password. I also notice that there is no settable property for packagepassword in the expressions editor.
I have tried defining the password as a parent variable, but it is not working -- still get prompted for the packagepassword. So I was thinking about using a SQL Server configuration table, but can not find the proper value to put in the "PackagePath" column.
Or any other suggestions/words of wisdom -- many thanks!
Steve
I have encountered the same kind of issue today and just updating that solution here as there is no answer given for this question.
We have to make sure the password has been updated on Master.dtsx --> Execute Package Task Editor (double click on Execute Package Task) --> Packages --> Password.
Enter the same password which you have set for the package and then run the Master package.
I Have a Package which will execute 7 packages using execute package task. Those 7 packages are saved with protection level as "Encrypt all data with password".
While configuring Execute Package task I selected the Location as "File System". Daily I need to run this package manually. But the Problem is I need to give password for all the 7 packages every time I want to execute it. Usually I run this package during lunch time.
Is there anyway I can store the package password programmatically? If I ran it yesterday and I didn't close the BIDS and I'm running it again today this will not ask for the password.
I also tried to build the package after the first run where it didn't ask for the password. Then I run it again without closing the BIDS. But this is still not working.
Even if you store the package passwords SSIS will always prompt you for entering the password when you are using BIDS to execute it . This is because BIDS try to open the individual child package designer and hence prompts you for entering the password .
So the only way is to execute it without the dialogue prompt for password is to use sql agent or dtexec utility
1.In order to execute the child packages i suggest you to create a config file for the parent package and select the property Package Password for all your Execute Package Task
2.Now in the config file enter the password for all the individual execute package task
<Configuration ConfiguredType="Property" Path="\Package\Execute Package Task.Properties[PackagePassword]" ValueType="String">
<ConfiguredValue>Password</ConfiguredValue>
</Configuration>
3.Execute your package using dtexec utility
dtexec.exe /f "PackageLocation/Parent.dtsx"
I've configured my SSIS configuration to load from an XML file. When I run the package with dtexec, I specify a different configuration file for each country I'm processing. In Visual Studio I specified this as France.dtsConfig (I have to choose one and this was the first one).
When I run the package with dtexec /FILE Import.dtsx /Reporting V /ConfigFile "C:\Italy.dtsConfig" I still see the output telling me that "The package is attempting to configure from the XML file France.dtsConfig".
I thought I could override the configuration by providing a different dtsConfig file for each country. Is this possible? What am I doing wrong?
I am using SQL Server 2008 R2 and I was getting the same issue with the Configuration override apparently being ignored. I found the trick I needed was to remove the XML config setting from the package (Package Configurations), and then when running the package the XML configuration file you specify is applied. There is however no message emitted about using the file (and since you removed the XML configuration definition from the package, that message is also not emitted).
MSDN has an explanation (go to section "Understanding How SSIS Package Configurations Are Applied at Run Time") that at first didn't make sense to me, but after finding that not having an XML configuration file defined gives the desired result, I can see what it is trying to say.
In my case I was using the XML file to set the instance name of the server on which the [SSIS Configurations] table was found. At design time this was DEVServer in the connection manager object, and I want to override the value to TESTSvr. Following the rules:
"The utility applies the configurations that were specified in the package at design time and in the order that is specified in the package." So the value DEVServer is loaded from the package.
"The utility then applies any options that you specified on the command line." The value in my XML file (TESTSvr) is now loaded. I can supply any filename I like here, and it will be loaded (be it France or Italy).
"The utility then reloads the configurations that were specified in the package at design time and in the order specified in the package. ... The utility uses any command-line options that were specified to reload the configurations." Note the second part of the rule, about using the command line values. Since we currently have set the server to TESTSvr, this value is now used to load the other configuration values from the [SSIS Configurations] table that you want.
I don't have a reference to an article that documents this behaviour, but I have confirmed it. If the file specified as the configuration file in the package configurations is available at run time, it will be used in preference to the one specified on the command line.
In my experience and my opinion, this is contrary to normal behaviour where specifying something in a command should override the built-in default.
To use the configuration file specified in the dtexec command, rename or delete the file that is specified in the Configuration String of the XML configuration file in the Package Configurations Organiser.
Found a way!
In the designer simply uncheck the "Enable package configurations" option under SSIS -> Package Configurations, and save.
dtexec will still honour the supplied configuration file on the /conf switch, but it will no longer attempt to use the design time configuration file even if is accessible.
I still agree that this is strange behaviour, and that the /conf should override design time settings no matter what.
This should work
/CONFIGFILE "C:\Italy.dtsConfig" /REPORTING V
Specify the complete config file location within double quotes
Edit :
When you have deployed your package in MSDB then the command to execute the package is
DTEXEC /SQL "\Package.dtsx" /SERVER "Server Name"
/CONFIGFILE "C:\Italy.dtsConfig" /REPORTING V
Else if you have deployed in File System then
DTEXEC /f "Physical Package Location"
/CONFIGFILE "C:\Italy.dtsConfig" /REPORTING V
Check whether you are pointing to the correct package
MSDN
You can use the /ConfigFile option to load additional configurations
at run time that you did not specify at design time. However, you cannot
use the /ConfigFile option to replace configured values that you also
specified at design time
I know configuring the logging for individual packages thru BIDS. But the drawback I see here is I have to add connectionstring for each tasks and when I have to deplloy these packages on server I have to change log file connectionstring for all packages. Currently I have 32 pacakes and this seems to be time consuming.
Is there any way where I can set up logging for all packages in one place?
You need to look at storing your configuration in either files or sql tables. For instance, in my current project, I have a common configuration file that has all of the items (like logging that are common to the entire project, then I have individual config files for items that are different per package (like individual database connection strings and variables). This allows me to modify the config on deployment without changing the package. SSIS reads in the configuration at runtime. To use logging see the answers in this question:
Is there a way to easily change the server name on several SSIS packages programmatically?
I run some jobs through the DTEXEC dos command and I redirect the output to a .log file.
Example
DTEXEC
/DTS "\File System\Customer_pkg"
/SERVER xxxxx
/MAXCONCURRENT " -1 "
/CHECKPOINTING OFF
/REPORTING V > c:\log\Customer_pkg.log