zoukankan      html  css  js  c++  java
  • SSIS变量属性中EvaluateAsExpression设置的作用

    我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示:

    在定义SSIS变量的时候可以使用固定值(如上图中的变量Number),也可以是使用表达式(如上图中的变量Sql),使用表达式的时候可以让变量去使用另一个变量的值,比如下图是变量Sql的表达式,其中就使用了变量Number的值:

    顺便说一下,本文上面的截图都是基于SqlServer2012的SSIS包,也就是VisualStudio 2010的SSIS包,其实VisualStudio 2008的SSIS包的变量也可以使用表达式,不过VisualStudio 2008需要打开VisualStudio的属性窗口后才能定义SSIS变量的表达式,如下图所示先在SSIS变量窗口选中要使用表达式的变量(变量MID_MonthsOver_SQL)

    然后从视图(View)下拉菜单中选中属性窗口(Properties Window)

    然后在属性窗口中就可以像在VisualStudio 2010中一样编辑变量的表达式(Expression)了

    不管是在VisualStudio 2010还是VisualStudio 2008的SSIS变量上,都有一个设置叫EvaluateAsExpression,这个设置可以在变量的属性窗口(Properties Window)中看到(怎么打开变量的属性窗口上面已经说了),如下图所示:

    默认情况下SSIS变量的EvaluateAsExpression是为False的,但是一旦你为SSIS变量使用了表达式(Expression),这个设置就会被自动改变为True,当然你也可以手动改回False,那么EvaluateAsExpression为True和False的时候有什么不同呢?

    实际上EvaluateAsExpression这个设置只有在SSIS变量使用表达式(Expression)的时候才会起作用,它可以控制在获取变量值的时候是否动态计算变量的表达式。

    举例说明,下图中我们设置了一个String类型的SSIS变量Sql,它的值依赖于Int32类型的变量Number,Number的初始值为0

    然后我们在SSIS包的控制流中定义了三个Sequence Container(Sequence Container,Sequence Container 1,Sequence Container 2),每一个Sequence Container都会使得变量Number的值先加1,然后输出变量Sql的值

    如果变量Sql的EvaluateAsExpression为True,三个Sequence Container的输出结果为下面所示:

    但是如果变量Sql的EvaluateAsExpression为False,这时三个Sequence Container的输出结果变为了下面:

    这说明当变量Sql的EvaluateAsExpression为True时,每当在SSIS包中获取变量Sql的值时都会动态地去计算它的表达式(Expression),用表达式的最新结果作为变量Sql的值。而当变量Sql的EvaluateAsExpression为False时,其表达式只会为变量Sql提供一个初始值,每当在SSIS包中获取变量Sql的值时都返回的是这个初始值,而不会去重新计算变量Sql的表达式。所以这就是SSIS变量EvaluateAsExpression这个设置的作用。

  • 相关阅读:
    SAP CRM WebClient UI上将text area里的文本清空的后台处理
    SAP Business Application Studio的权限控制
    Git安装与配置——详细教程1
    如何在Windows平台下安装配置Memcached
    详解PHP操作Memcache缓存技术提高响应速度的方法
    PHP开发小技巧②—实现二维数组根据key进行排序
    PHP开发小技巧③—实现多维数组转化为一维数组
    PHP开发小技巧①①—php实现手机号码显示部分
    curl实例-通过新浪股票接口获取股票信息
    中国菜刀的功能介绍和使用方法
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/5889980.html
Copyright © 2011-2022 走看看