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這個設置的作用。
?
總結
以上是生活随笔為你收集整理的SSIS变量属性中EvaluateAsExpression设置的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组合排列的实现方法
- 下一篇: 20、查看帮助的命令--man,info