SSISDB 系列随笔汇总:

参数(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)

  1. select f.name as folder_name,
  2. p.name as project_name,
  3. op.parameter_id,
  4. op.parameter_name,
  5. case op.object_type
  6. when 20 then 'Project'
  7. when 30 then 'Package'
  8. else ''
  9. end as object_type,
  10. op.object_name,
  11. op.data_type,
  12. op.required,
  13. op.sensitive,
  14. op.design_default_value,
  15. op.default_value,
  16. case op.value_type
  17. when 'V' then 'parameter_value is a literal value'
  18. when 'R' then 'referencing an environment variable'
  19. else ''
  20. end as value_type,
  21. op.value_set,
  22. op.referenced_variable_name
  23. from catalog.object_parameters op
  24. inner join catalog.projects p
  25. on op.project_id=p.project_id
  26. inner join catalog.folders f
  27. on p.folder_id=f.folder_id
  28. where op.object_type in(20,30)

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

  1. select epv.execution_parameter_id,
  2. case epv.object_type
  3. when 20 then 'Project'
  4. when 30 then 'Package'
  5. when 50 then 'Special'
  6. else ''
  7. end as object_type,
  8. epv.parameter_data_type,
  9. epv.parameter_name,
  10. epv.parameter_value,
  11. epv.sensitive,
  12. epv.required,
  13. epv.value_set,
  14. epv.runtime_override
  15. from catalog.execution_parameter_values epv
  16. where execution_id=104627

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

  1. declare @Execution_ID bigint
  2. exec catalog.create_execution @package_name=N'Test.dtsx',
  3. @Execution_ID=@Execution_ID output,
  4. @folder_name=N'MyProjectFloder',
  5. @project_name=N'MyProject',
  6. @use32bitruntime=FALSE,
  7. @reference_id=null
  8.  
  9. declare @var0 sql_variant=N'Package_Parameter_value';
  10. exec catalog.set_execution_parameter_value
  11. @Execution_ID=@Execution_ID,
  12. @object_type=30, --Package
  13. @parameter_name=N'Package_Parameter_Name',
  14. @parameter_value=@var0
  15.  
  16. exec catalog.start_execution @Execution_ID=@Execution_ID

二,参数的属性

参数有两种作用域: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执行完成之后,才返回结果。

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

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

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

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

  1. select epv.execution_parameter_id,
  2. case epv.object_type
  3. when 20 then 'Project'
  4. when 30 then 'Package'
  5. when 50 then 'Special'
  6. else ''
  7. end as object_type,
  8. epv.parameter_data_type,
  9. epv.parameter_name,
  10. epv.parameter_value,
  11. epv.sensitive,
  12. epv.required,
  13. epv.value_set,
  14. epv.runtime_override
  15. from catalog.execution_parameter_values epv
  16. where execution_id=104627
  17. and epv.object_type=50

四,环境和环境变量

环境(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,参看参数 和环境变量的对应关系

  1. --object_type : 20 (project parameter), 30 (package parameter)
  2. --value_type: V (parameter_value is a literal value),R(referencing an environment variable)
  3. --value_set:1(the parameter value has been assigned), 0 (the parameter value has not been assigned)
  4.  
  5. select op.project_id,
  6. p.name as ProjectName,
  7. op.object_type,
  8. op.object_name,
  9. op.parameter_name,
  10. op.data_type,
  11. op.required,
  12. op.sensitive,
  13. op.design_default_value,
  14. op.default_value,
  15. op.value_type,
  16. op.referenced_variable_name,
  17. op.value_set
  18. from [catalog].[object_parameters] op with(NOLOCK)
  19. inner join catalog.projects p with(nolock)
  20. on op.project_id=p.project_id
  21. where object_type in(20,30)

2,查看SSISDB的环境变量

  1. select f.name as Folder_Name,e.name as Environment_Name,
  2. ev.variable_id,ev.name as Environment_Variable_Name,
  3. ev.sensitive,ev.type,ev.value
  4. from catalog.environments e
  5. inner join catalog.environment_variables ev
  6. on e.environment_id=ev.environment_id
  7. inner join catalog.folders f
  8. on e.folder_id=f.folder_id

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

  1. select er.environment_folder_name,er.environment_name,p.name as Project_Name,
  2. er.reference_type,
  3. ev.variable_id,ev.name as Environment_Variable_Name,
  4. ev.sensitive,ev.type,ev.value,
  5. op.parameter_id,op.object_type,op.object_name,op.parameter_name,
  6. op.data_type as Parameter_Data_Type,op.required,op.sensitive,
  7. op.default_value,op.design_default_value,op.value_set,op.value_type
  8. from catalog.environment_references er
  9. inner join catalog.projects p
  10. on er.project_id=p.project_id
  11. inner join catalog.environments e
  12. on er.environment_name= er.environment_name
  13. inner join catalog.environment_variables ev
  14. on e.environment_id=ev.environment_id
  15. inner join catalog.object_parameters op
  16. on op.project_id=p.project_id and op.value_type=N'R' and op.referenced_variable_name=ev.name

参考文档:

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

SSISDB6:参数和环境变量的更多相关文章

  1. 34.Docker安装Mysql参数及环境变量使用

    容器安装好后,通过exec进去到容器的内部, 容器安装的时候两种容器配置参数 直接在镜像的后面加配置 第二种方式 把这段代码拷贝过来.参数我们可以写在镜像的后面 我们把参数写在镜像的后面 然后我们需要 ...

  2. idea指定启动参数、环境变量

    1.  点击Edit Configurations 2 # VM Arguments 是设置的虚拟机的属性 # VM options # 环境变量参数 这里需要指定-D参数 -server -XX:M ...

  3. 解决 Flask 项目无法用 .env 文件中解析的参数设置环境变量的错误

    在 Windows 上启动 Flask 项目时,工作目录有 UTF-8 编码的 .env 文件,里面配置的环境变量在 Python2 中识别为 Unicode 类型,导致下述错误: * Serving ...

  4. SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试

    java命令的模版:java [-options] -jar jarfile [args...] 先贴一下我的简单的启动命令: java -Xms128m -Xmx256m -Xdebug -Xrun ...

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

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

  6. [译]SSIS 通过环境变量配置数据源连接参数

    场景 希望在包执行的时候可以随意选择参数,这时候我们可以用环境变量 . 另外所有包都可以用环境变量,有大量包的时候就比较方便. Step 1: 创建SSIS包 在Data Flow Task里面创建 ...

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

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

  8. Unix/Linux环境C编程入门教程(32) 环境变量那些事儿

    1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdli ...

  9. linux 学习:环境变量设置

    一.临时环境变量 临时环境变量,只对当前打开的shell生效,shell关闭后,环境变量失效. 设置方法一: 分两步 MYPARA=hello export MYPARA 设置方法二:一步完成 exp ...

随机推荐

  1. Debian 常用命令

    换源 用中科大的比较快 deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-free deb-src http://mirror ...

  2. python基础一数据类型之列表

    摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...

  3. Oracle EBS AR 贷项通知单核销取值

    SELECT cm.trx_number ,fnd_flex_ext.get_segs('SQLGL', 'GL#', gcc.chart_of_accounts_id, ad.code_combin ...

  4. 分享一个基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具

    soar-web 基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具,支持 soar 配置的添加.修改.复制,多配置切换,配置的导出.导入与导入功能. 环境需求 python3.xF ...

  5. Hyper-v UBUNTU 12.04 模板设置

    Ubuntu 12.04 模板设置 参考文档 Hyper-v安装ubuntu http://blogs.msdn.com/b/virtual_pc_guy/archive/2012/05/02/ubu ...

  6. Windows10 家庭版没有本地组策略解决方法

    windows 家庭版默认是没有本地组策略的, win+R运行gpedit.msc提示不存在 下面的代码保存一个cmdorbat 脚本文件add_gpedit.cmd, 并执行 add_gpedit. ...

  7. 【转】Java学习---10个测试框架介绍

    [原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...

  8. <button>与<input type="button">

    在做form表单,点击按钮随机生成两串密钥的时候 1.用第一种按钮的时候,会出现刷新form表单的现象.会把创建密钥前面的输入框中的字消失.虽然能生成密钥1和密钥2,但是会闪一下,随即消失.几个输入框 ...

  9. 3.1Python的判断选择语句

    返回总目录 目录: 1.if单分支语句 2.if else 双分支语句 3.if elif ...else多分支语句 4.if 嵌套语句 判断语句总览: (一)if单分支语句: 语法: if 条件: ...

  10. js常见执行方法window.onload = function (){},$(document).ready()

    1. window.onload = function(){}; 当页面DOM对象加载完毕,web浏览器能够运行JS时,此方法即被触发. 2. $(document).ready();当web页面以及 ...