Let’s take a look at an SSIS Project in SSMS:
Demo is the SSIS Catalog folder. Demo contains three SSIS projects named 0-Monolith, EmptySSISProject, and LiftAndShift.
If we expand the LiftAndShift SSIS project we see it contains a single SSIS package named Load Customer.dtsx.
The Demo folder contains two Catalog environments named env1 and env2.
These are the artifacts surfaced via the Integration Services Catalogs node in SSMS.
Before I go on, you may read what I’m about to write here and in the companion post and think, “Andy doesn’t like the Integration Services Catalogs node in SSMS.” That is not accurate. I do like the Integration Services Catalogs node in SSMS. It surfaces enough information for the primary target user of SSMS – the Database Administrator – to see what they need to see to do their job, without “cluttering up” their interface with stuff that they rarely need to see and even more-rarely change.
But Wait, There’s More
There are configurations that are not readily surfaced in the Integration Services Catalogs node in SSMS. To view the configurations metadata for the LiftAndShift SSIS project, right-click the project and click Configure:
The Configure window displays:
From this window I can see examples of the three sources of values for SSIS project and package parameters:
- Design-time defaults
- Literals
- Reference mappings
Design-Time Defaults
Design-time defaults are the default values entered by the SSIS developer when building the SSIS project. These values remain with the SSIS project as it is deployed. They are not changed unless and until another version of the SSIS project is deployed, one which contains different default values for parameters.
Design-time defaults are denoted by no text decoration.
Literals
There are actually two kinds of literal values:
- Configuration literals
- Execution literals
Configuration Literals
Configuration literals are stored in the SSIS Catalog. The values are “hard-coded” to override design-time defaults when the SSIS package is executed.
Configuration literals are denoted by bold text decoration.
When the SSIS project was first deployed to the SSIS Catalog, the value of ProjectLiteralParameter was the design-time default. We can see the design-time default value of ProjectLiteralParameter if we open the Configure window and click the ellipsis beside the Value cell for the parameter:
The design-time default value for ProjectLiteralParameter is “Project Default Value” shown circled in green above. The Configuration Literal value is “Project Literal Value” and is shown inside red and blue boxes in both the Set Parameter Value dialog and the Configure project window.
Execution Literals
Execution literals may be supplied in the Execute Package window. The Execute Package window is displayed when a user right-clicks an SSIS package and then clicks Execute:
Please note the Configuration literals – the values shown in the previous Configuration window with bold text decoration – are shown with no text decoration in the Execute Package window:
Why are the Configuration literals not identified as such in the Execute Package window? The reason is that these values can be overridden as Execution literals.
If I click the ellipsis beside the value cell for the parameter named ProjectLiteralParameter, I can type in a value – an execution literal value – that will override the value of the ProjectLiteralParameter when the SSIS package is executed. The text decoration – in the Execute Package window – for an Execution Literal is bold:
This is a little complex so please bear with me as we examine what just happened.
When the SSIS project was first deployed to the SSIS Catalog, the value of ProjectLiteralParameter was the design-time default. We saw this value in the image above, repeated here:
The design-time default value for ProjectLiteralParameter is “Project Default Value” shown circled in green above. The Configuration Literal value is “Project Literal Value” and is shown inside red and blue boxes in both the Set Parameter Value dialog and the Configure project window.
When we open the Execute window, the Configuration literal value – “Project Literal Value” – is shown with no text decoration (as shown earlier):
We can override the configured override for this execution of the SSIS package and this execution only by clicking the ellipsis to the right of the Value cell for ProjectLiteralParameter. The ellipsis opens the Edit Literal Value for Execution dialog into which we can enter an Execution literal value:
Please note: Execution literal values are not persisted in the SSIS Catalog. They are applied for the current execution – the execution triggered when the user clicks the OK button on the Execute Package window – and that execution only. If the use clicks the Cancel button and then re-opens the Execute Package window, all values revert to their Configured state.
Reference Mappings
Reference mappings are a mechanism for externalizing configurations in the SSIS Catalog. References are an elegant solution for configurations and release management. As with all flexible solutions, they are complex.
Reference mappings begin with References, and references begin with SSIS Catalog Environments (did I mention this was complex?).
Not discussed: Execution literals may also be used to override parameters that are reference-mapped. More on reference mappings in a bit…
SSIS Catalog Environments
An SSIS Catalog Environment is a container that holds SSIS Catalog Environment Variables. An SSIS Catalog Environment has the following configurable properties:
- Name
- Description (optional)
An SSIS Catalog Environment is a collection of SSIS Catalog Environment Variables. An SSIS Catalog Environment Variable has the following configurable properties:
- Name
- Type
- Description (optional)
- Value
- Sensitive
References
A reference is a relationship between an SSIS Catalog Environment and an SSIS project (or SSIS package) that is deployed to an SSIS Catalog:
References are configured in the Configuration window on the References page:
Reference Mappings
A reference mapping applies (“maps”) the value of an SSIS Catalog Environment Variable – accessed via a reference – to an SSIS Project (or SSIS package) parameter.
Reference mappings are denoted by underlined text decoration:
In the image above, StringParameter is the name of the SSIS Catalog Environment Variable mapped to the parameter named ProjectParameter. This means the value contained in the SSIS Catalog Environment Variable named StringParameter will be used to override the value of the parameter named ProjectParameter at execution time.
There are several components of a Reference Mapping configuration. If we start our description at the parameter, feel free to sing along to our own version of The Skeleton Song substituting the following:
- The parameter is part of the SSIS project
- The project references the SSIS Catalog Environment
- The SSIS Catalog Environment contains the SSIS Catalog Environment Variable
- SSIS Catalog Environment Variable value property overrides the parameter value at execution time.
Not discussed: Multiple references and reference selection at execution time.
Viewing the Execution-Time Value
You can find the value that will be used at execution-time using SSMS.
View Design-Time Default and Configuration Literal Values
Design-time default and configuration literal values are available from the Configuration window:
Reference Mapping Values
You have to open a few windows – and a couple pages on the same window (Configure) to surface the execution-time value of a parameter that is mapped via reference:
It’s… complicated. And it’s even more complex if we include multiple references to different SSIS Catalog Environments.
This last image is why I wrote SSIS Catalog Browser.
Catalog Browser is free and I write about how to see these same SSIS Catalog artifacts in the companion post titled Viewing SSIS Configurations Metadata in SSIS Catalog Browser.
One thought on “Viewing SSIS Configurations Metadata in SSMS”