zoukankan      html  css  js  c++  java
  • 变量在SSIS包中的使用

    一、变量的使用
    1、新建一个Integration Services 项目SSISForVariable
    2、创建变量
    菜单栏->SSIS->变量(或控制流空白区域右击->变量)调出变量窗口,创建两个日期变量
    3、创建连接管理器
    新建两个OLE DB连接AdventureWorks2012、DBA_Monitor

    4、添加数据流任务->添加OLEDB源、OLEDB目标
    编辑OLEDB源配置如图所示,点击参数,修改参数与变量的映射关系

    编辑OLEDB目标,调整输入列与输出列的映射关系

    5、运行包,查询目标表记录

    6、将上述OLEDB源中的SQL命令封装成存储过程,代码如下:

     View Code

    执行存储过程得到结果如下:

    将OLEDB源中的SQL命令修改成存储过程形式,运行失败!

    修改参数名字为存储过程所定义的参数(必须保持完全一致,包括大小写,变量数据类型与存储过程中的保持一致),运行通过。

    上面的过程在申明变量的时候就给变量赋值。还可以用另外两种方式给变量赋值,一种是通过执行 SQL 任务组件返回值的方式给变量赋值,一种是通过脚本组件来给变量赋值。


    二、变量另外两种赋值方式
    1、通过执行 SQL 任务组件
    添加执行 SQL 任务,编辑任务,在常规页面->SQL语句 可以从相关的表中取数据。这里为了方便,直接select 常量(为了体现不一样,取06年到07年的数据),ResultSet选择单行。结果集页面添加查询语句返回列与变量的对应关系。

    运行包,得到了06-07年的数据,当然可以参照前面调整OLEDB源中的代码。

    --22:11 2014/5/19 补充
    '执行SQL任务'也可以是一个返回多条记录的结果集,利用'Foreach 循环容器'循环这个结果集的每一条记录,根据这条记录的某几个字段执行'数据流任务'。
    首先添加一个Object类型的变量ResultList用来存储返回的主结果集:

    '执行SQL任务'->常规->SQL语句 从相关的表中取数据,ResultSet选择完整结果集:

    参数映射,将主结果集中返回的字段按需要map到相应的定义好的变量上,记得Direction设为Input(有人说要设成Output,但我用Output测试就出错)。ParameterName一定要是数字,并以0开始与主结果集中的字段相对应。下图是我的主结果集及映射关系:

    结果集页,增加一个Result,ResultName一定要设置成0,VariableName为我们之前定义好的ResultList:

    增加一个'Foreach 循环容器'控件,编辑容器属性
    切换到集合页,将Enumerator设置为Foreach ADO 枚举器以循环结果集。ADO 对象源变量选择ResultList。选择Rows in the first table,如下图:

    变量映射页,配置变量的对应关系,其中Index跟前面的配置要对应:

    在容器内添加数据流任务,便可循环执行操作:


  • 相关阅读:
    mvp在flutter中的应用
    Flutter 网络请求库http
    Flutter Dart中的异步
    阿里云 RDS 数据库又发 CPU 近 100% 的“芯脏病”团队
    上周热点回顾(10.14-10.20) 团队
    云上的芯脏病:奇怪的阿里云 RDS 数据库突发 CPU 近 100% 问题团队
    【故障公告】docker swarm 集群问题引发的故障团队
    上周热点回顾(10.7-10.13)团队
    上周热点回顾(9.30-10.6) 团队
    上周热点回顾(9.23-9.29) 团队
  • 原文地址:https://www.cnblogs.com/xiaohuhu/p/13793223.html
Copyright © 2011-2022 走看看