Project & package parameters in the SSIS catalog

This query enables you to inspect package and project parameters for objects deployed into the SSIS catalog:

SELECT
  op.parameter_id
, f.[name] AS folder_name
, p.[name] AS project_name
, CASE op.object_type
    WHEN 20 THEN 'Project'
    WHEN 30 THEN 'Package'
  END AS ParameterType
, op.[object_name]
, op.parameter_name
, CASE op.value_type
    WHEN 'V' THEN 'Literal'
    WHEN 'R' THEN 'Env var reference'
    ELSE op.value_type
  END AS SpecifiedAs
, op.design_default_value AS DesignTimeValue -- value set in Visual Studio at deployment time
, op.sensitive
--**************************************************************************
-- values as displayed in SSMS configure dialog
, IIF(LEFT(op.[parameter_name], 3) = 'CM.', 'Connection Managers', 'Parameters') AS [ConfigurationPage]
, op.[object_name] AS Container
, IIF(
    LEFT(op.[parameter_name], 3) = 'CM.'
  , SUBSTRING(op.[parameter_name], 4, CHARINDEX('.', op.[parameter_name], 4) - 4)
  , op.[parameter_name]
  ) AS [Name]
, IIF(
    LEFT(op.[parameter_name], 3) = 'CM.'
  , SUBSTRING(op.[parameter_name], CHARINDEX('.', op.[parameter_name], 4) + 1, LEN(op.[parameter_name]))
  , ''
  ) AS [PropertyName]
, op.default_value AS [ConfiguredValue]  -- value set in catalog post-deployment
--**************************************************************************
-- values for use in catalog.set_object_parameter_value 
-- https://docs.microsoft.com/en-us/sql/integration-services/system-stored-procedures/catalog-set-object-parameter-value-ssisdb-database
, op.[object_type]
, f.[name] AS folder_name
, p.[name] AS project_name
, op.[parameter_name]
, op.[object_name]
, op.value_type
--, op.*
FROM SSISDB.[catalog].[object_parameters] op
  INNER JOIN SSISDB.[catalog].projects p  ON p.project_id = op.project_id
  INNER JOIN SSISDB.[catalog].folders f ON f.folder_id = p.folder_id
--WHERE op.value_set = 1  -- design-time value overridden post-deployment
ORDER BY
  [ConfigurationPage] DESC
, op.object_type
, op.[object_name]
, [Name]

You can set a parameter value post-deployment (i.e. the value of object_parameters.default_value1)) using the stored procedure catalog.set_object_parameter_value. e.g. to set the value of default value of parameter 'MyParam' in package 'MyPackage.dtsx':

EXEC catalog.set_object_parameter_value
  @object_type = 30  -- package
, @folder_name = N'MyFolder'
, @project_name = N'MyProject'
, @parameter_name = N'MyParam'
, @parameter_value = 'post-deployment default value'
, @object_name = 'MyPackage.dtsx'

The @object_name parameter is only required when @object_type = 30 – an @object_type of 20 indicates a project parameter, and the project is already identified by the @project_name parameter.


1)
A value configured after deployment is still considered a default because it can be overridden again at runtime.