参数(Parameter)是Package暴露给外界的接口,通过传递不同的参数值,能够控制 Package 的执行流程,执行不同的任务(Task)。参数分为Package级别的参数(Package Parameter)和工程级别的参数(Project Parameter),Package参数只能作用于当前的Package,而Project参数能够作用于当前Project中包含的所有Package。参数的值只能引用,不能修改。

参数除了直接赋值之外,还能通过环境变量来赋值。环境是变量的集合,参数引用不同环境中的变量,能够快速切换Package引用的参数值,例如,在测试环境和产品环境之间快速切换,这是参数化编程带来的便利。

一,参数的值

参数有三种类型的值:design_default_value,Default_Value 和 Execution_Value:

  • design_default_value:在设计SSIS Project时,设置parameter的默认值。
  • Default_Value:在project 部署到SSISDB后,如果不对Parameters value进行修改,那么 Default_Value 和 design_default_value 相同;也可以修改Parameter的default value。
  • Execution_Value:Package 在执行时,parameters的值是Execution Value。默认情况下,Package在执行时,使用default value作为execution value;也可以在启动Execution时,设置Parameter的值,修改Execution Value不会修改Default value。

用户可以创建参数和环境之间的映射,Package在执行时,引用环境(Environment)中的变量(Variables)为参数赋值。

1,查看参数的设计值(design_default_value) 和默认值(Default_Value)

select f.name as folder_name,p.name as project_name, op.parameter_id,op.parameter_name,case op.object_typewhen 20 then 'Project'when 30 then 'Package'else ''end as  object_type,op.object_name,op.data_type,op.required,op.sensitive,op.design_default_value,op.default_value,case op.value_typewhen 'V' then 'parameter_value is a literal value'when 'R' then 'referencing an environment variable'else ''end as value_type,op.value_set,op.referenced_variable_name
from catalog.object_parameters op
inner join catalog.projects p on op.project_id=p.project_id
inner join catalog.folders f on p.folder_id=f.folder_id
where op.object_type in(20,30)

View Code

2,查看参数的执行值(Execution_Value)

select epv.execution_parameter_id,case epv.object_typewhen 20 then 'Project'when 30 then 'Package'when 50 then 'Special'else ''end as  object_type,epv.parameter_data_type,epv.parameter_name,epv.parameter_value,epv.sensitive,epv.required,epv.value_set,epv.runtime_override
from catalog.execution_parameter_values epv
where execution_id=104627

View Code

3,通过TSQL来设置参数的执行值(Execution value)

declare @Execution_ID bigint
exec catalog.create_execution @package_name=N'Test.dtsx',@Execution_ID=@Execution_ID output,@folder_name=N'MyProjectFloder',@project_name=N'MyProject',@use32bitruntime=FALSE,@reference_id=nulldeclare @var0 sql_variant=N'Package_Parameter_value';
exec catalog.set_execution_parameter_value @Execution_ID=@Execution_ID,@object_type=30,        --Package@parameter_name=N'Package_Parameter_Name',@parameter_value=@var0exec catalog.start_execution @Execution_ID=@Execution_ID

View Code

二,参数的属性

参数有两种作用域:Project Scope 和 Package Scope。Project Scope用于Project中的所有package,而Package Scope只能用于当前Package,package只能引用 Parameter的值,不能修改。

Sensitive:敏感性,对于敏感参数,SSIS对值进行加密。

Required:必需性,对于必需参数,在执行时,必须设置值;在Create Agent时,必须显式为必需参数赋值。

三,特殊参数

SSISDB的特殊参数,用于控制Package执行时的特殊行为,这些参数的值,通过 catalog.set_execution_parameter_value 来设置,参数 @object_type必须为50.

  • LOGGING_LEVEL
  • CUSTOMIZED_LOGGING_LEVEL
  • DUMP_ON_ERROR
  • DUMP_ON_EVENT
  • DUMP_EVENT_CODE
  • CALLER_INFO
  • SYNCHRONIZED

1,记录日志的级别

LOGGING_LEVEL:设置执行实例的日志级别,有效值是0、1、2、3,数值越大,日志记录的越详细,分别是:不记录(no Logging),基本(Basic),性能(Performance)和详细(verbose )。

2,Package执行的同步性

默认情况下,当使用 catalog.start_execution 执行一个Package的执行实例(Execution Instance)时,该sp会立即返回结果值(0,表示调用Package成功),而不会等待Package执行完成,如果将参数 SYNCHRONIZED  设置为1,那么该SP不会立即返回,而是等到Package执行完成之后,才返回结果。

exec catalog.set_execution_parameter_value@execution_id, @object_type= 50, @parameter_name = N'Synchronized', @parameter_value = 1;

3,创建用于调试的转存文件

  • DUMP_ON_ERROR:在Package发生错误时创建转存文件
  • DUMP_ON_EVENT:在触发事件时创建转存文件
  • DUMP_EVENT_CODE:转存事件代码

4,查看特殊参数的执行值(Execution value)

select epv.execution_parameter_id,case epv.object_typewhen 20 then 'Project'when 30 then 'Package'when 50 then 'Special'else ''end as  object_type,epv.parameter_data_type,epv.parameter_name,epv.parameter_value,epv.sensitive,epv.required,epv.value_set,epv.runtime_override
from catalog.execution_parameter_values epv
where execution_id=104627and epv.object_type=50

View Code

四,环境和环境变量

环境(Environment)是变量的集合,创建环境的目的是为了向环境中添加变量。在开发Package时,为了保证开发包的质量,需要把产品环境和测试环境独立开来,包只有在测试环境中执行通过时,才能部署到产品环境中。这可以简单的通过修改链接管理器(Connection Manager)来实现。但是,当链接比较多时,或参数比较多时,在修改参数时,很容易出现错误。如果把Project和环境关联起来,把环境中的变量和参数关联起来。这样,只需要修改Project引用的环境,就可以很容易地切换Package运行的环境。

1,创建环境

通过向导来创建环境,右击“Environments”,点击“Create Environment”,打开创建环境的向导,输入环境名称,点击“OK”按钮,创建环境:

2,向环境中添加变量

右击新建的环境,点击“Properties”,选择“variables”页,输入变量的名称,选择变量的类型,输入变量值,勾选变量的敏感(Sensitive)属性:

3,设置Project引用环境

右击工程名称,点击“Configure”,在“Parameters” Tab中查看工程的参数。

选择“References” Tab,选择project 引用的环境:

回到“Parameters”Tab,点击value列后面的“...”,逐个设置工程参数应用的环境变量:

4,查看Project引用的环境

通过 catalog.environment_references 查看Project应用的环境,引用类型reference_type,当reference_type为A,表示使用绝对应用(absolute reference);当reference_type为A,表示使用相对引用(relative reference)。相对引用表示环境和Project必须处于相同的Folder中;绝对引用表示环境和Project可以位于不同的Folder中,当然也可以位于相同的Folder中。

五,查看环境变量

1,参看参数 和环境变量的对应关系

--object_type : 20 (project parameter), 30 (package parameter)
--value_type: V (parameter_value is a literal value),R(referencing an environment variable)
--value_set:1(the parameter value has been assigned), 0 (the parameter value has not been assigned)select op.project_id,p.name as ProjectName,op.object_type,        op.object_name,op.parameter_name,op.data_type,op.required,op.sensitive,op.design_default_value,op.default_value,op.value_type,op.referenced_variable_name,op.value_set
from [catalog].[object_parameters] op with(NOLOCK)
inner join catalog.projects p with(nolock)on op.project_id=p.project_id
where object_type in(20,30)

View Code

2,查看SSISDB的环境变量

select f.name as Folder_Name,e.name as Environment_Name,ev.variable_id,ev.name as Environment_Variable_Name,ev.sensitive,ev.type,ev.value
from catalog.environments e
inner join catalog.environment_variables evon e.environment_id=ev.environment_id
inner join catalog.folders fon e.folder_id=f.folder_id

View Code

3,查看Package 的参数和环境变量的映射关系

select er.environment_folder_name,er.environment_name,p.name as Project_Name,er.reference_type,ev.variable_id,ev.name as Environment_Variable_Name,ev.sensitive,ev.type,ev.value,op.parameter_id,op.object_type,op.object_name,op.parameter_name,op.data_type as Parameter_Data_Type,op.required,op.sensitive,op.default_value,op.design_default_value,op.value_set,op.value_type
from catalog.environment_references er
inner join catalog.projects pon er.project_id=p.project_id
inner join catalog.environments e on er.environment_name= er.environment_name
inner join catalog.environment_variables evon e.environment_id=ev.environment_id
inner join catalog.object_parameters opon op.project_id=p.project_id and op.value_type=N'R' and op.referenced_variable_name=ev.name

View Code

参考文档:

catalog.object_parameters (SSISDB Database)

catalog.environment_references (SSISDB Database)

catalog.set_execution_parameter_value (SSISDB Database)

Quick Tip – Run SSIS 2012 packages synchronously and other execution parameters

作者:悦光阴
出处:http://www.cnblogs.com/ljhdo/
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。

分类: SSISDB
标签: SSISDB, 参数, 环境变量
本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5493125.html,如需转载请自行联系原作者

SSISDB6:参数和环境变量相关推荐

  1. nls参数、环境变量以及函数等起作用的顺序!

    nls参数.环境变量以及函数起作用的顺序是: instance级参数--->nls_lang--->session级参数--->函数. [@more@] C:>set nls_ ...

  2. OpenShift 4 Hands-on Lab (12) 使用配置参数和环境变量

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 使用ConfigMap配置参数 使用Env环境变量 通过Volume使用Co ...

  3. linux学习笔记-- linux的 shell和linux C 程序 获取命令行参数和环境变量

    常用的linux指令基本都支持命令行参数 例如 : ls -l rm -r rm -f cp -r 那么 这些参数都是如何去被应用程序获取的呢? 学习记录一下 1. shell 脚本 1.1 shel ...

  4. 如何在IDEA内设置启动参数和环境变量

    1. 点击Edit Configuration 2.设置页面 2.1.属性信息 # VM Arguments 是设置的虚拟机的属性 # VM options # 环境变量参数 非虚拟机参数需要指定-D ...

  5. IDEA如何设置启动参数,环境变量

    1.需求场景: 1.1 需求:项目整合调用第三方系统的接口时,第三方系统需要获取特殊的参数,本项目是web项目使用本地tomcat启动,所以应该在tomcat启动时,设置参数 1.2 问题: 2.问题 ...

  6. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]...

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  7. 【Linux】环境变量和命令行参数

    文章目录 一.环境变量 1.1 基本概念 1.2 查看环境变量 1.3 环境变量:PATH 1.4 环境变量:HOME 1.5 和环境变量相关的命令 1.6 通过 C 库函数获取环境变量:getenv ...

  8. 【linux草鞋应用编程系列】_2_ 环境变量和进程控制

    一. 环境变量 应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作. 在linux中有两种方法获取环境变量,分述如下. 1.通过main函数的参数获取环境变量 main函数的多种 ...

  9. Linux进程-命令行参数和环境列表

    命令行参数 在C中,main函数有很多的变种,比如 main(), int main(), int main(int argc, char *argv[]), int main(int argc, c ...

最新文章

  1. 7号团队:团队任务3-每日任务(2018-11-26)
  2. The JVM Architecture Explained-JVM架构解析(译)
  3. 网易云音乐的消息队列改造之路
  4. 皮一皮:文化人的情侣头...
  5. listview条目用状态选择器没反应
  6. 云存储领域的那些安全难题与解决途径
  7. Cannot place PIO comp S on the proposed PIO site PB6C / F5 because the types of their IOLOGICs a...
  8. 记录 之 numpy查看数据类型和类型转换
  9. 使用代码创建Hybris storefront订单时遇到错误No result for the given example [TitleModel (
  10. css框架:五大css流行框架的总结-css教程-PHP中文网
  11. Elasticsearch(三) 使用kibana 操作ES
  12. Java 学习笔记(121208)
  13. Android强指针sp和弱指针wp区别
  14. SVN 更新发生冲突各选项含义
  15. 微信答题小程序用时计算逻辑梳理
  16. Python绘制正态分布图及求分位数
  17. 4r照片尺寸是多大_数码照片4D、4R、6RW是什么意思?4R照片尺寸是多大图片?
  18. TSMaster1.4.2补丁包发布
  19. 海天蚝油《挑战不可能》现实版听风者展现超强听力
  20. namespace的作用及用法

热门文章

  1. python学习笔记(七)——类基础
  2. File转化为MultipartFile
  3. 【Linux】【服务器】 CentOS7下远程访问mysql数据库_创建用户及授予权限_查看用户、修改密码详细步骤
  4. Matlab-基于短时神经网络的声音分类
  5. 云服务器安装虚拟机方法,云服务器安装虚拟机方法
  6. mysql索引分析_MySQL索引分析和优化
  7. 【数学和算法】奇异值分解在【图像压缩】中的应用
  8. 【c++】14.编译proto和proto相关用法
  9. Caffe代码导读(4):数据集准备
  10. MySQL防止重复插入唯一限制的数据 4种方法