天天看點

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

原文:

上期回顧:

首先我們來看看包裡面的變量

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

   ssis包變量分為兩種,一種是系統的内置變量,是一個ssis包初使化都會自帶的,一種是使用者自己定義的變量。

 在ssis包中,常用的變量的類型包含以下:int32,string,boolean,datetime,object......

二,讓我們來看看包裡面的限制(線)

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

如圖中所示的線就是限制,官方的解釋是這樣的:優先限制在控制流中連結包中的可執行檔案、容器和任務,并指定決定可執行檔案是否運作的條件。在圖中的表達就是,當“得到變量值”這一步執行成功後,并且滿足優先限制中的條件的時候,才會執行”插入表變量“這一步。

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

先上一份官方的關于限制的解釋:

求值運算

指定優先限制使用的求值運算。 constraint, expression, expression and constraint, and expression or constraint.‘>運算包括:“限制”、“表達式”、“表達式和限制”和“表達式或限制”。

success, failure, or completion. ‘>指定限制值:“成功”、“失敗”或“完成”。

success, failure, or completion. ‘>注意:

success, failure, or completion. ‘>優先限制線的含義:綠色表示“成功”,突出顯示表示“失敗”,藍色表示“完成”。

表達式

expression, expression and constraint, or expression or constraint, type an expression or launch the expression builder to create the expression.‘>如果使用運算“表達式”、“表達式和限制”或“表達式或限制”,則鍵入一個表達式或啟動表達式生成器來建立表達式。 表達式的計算結果必須為布爾值。

測試

驗證表達式。

邏輯與

選擇此選項可以指定:同一個可執行檔案的多個優先限制必須一起計算。 true.‘>所有限制的計算結果都必須為 true。

true.‘>注意

true.‘>這種類型的優先限制顯示為綠色、突出顯示或藍色實線。

邏輯或

選擇此選項可以指定:同一個可執行檔案的多個優先限制必須一起計算。 true.‘>至少必須有一個限制的計算結果為 true。

true.‘>

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

注意

這種類型的優先限制顯示為綠色、突出顯示或藍色點線。

結合以上的解釋,我們來做這樣一個package:現有[report]表一張,當發現report表資料量大于0時,将report表的總行數插入到report曆史表t_reporthist中。

1)新增加一個變量totalrowcount存儲report表的總量

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

2)建立一個sql

連結器

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流
SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

3)先建一個sql任務

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

  拖入到右邊的圖形界面區,輕按兩下打開這個控件的配置界面:

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

在正常欄下可以做如下的配置:

connectiontype:選中ado.net

connection:選中我們在連接配接管理器中先添加的dst_bitest

sqlstatement:在這裡我們要輸入我們要使用的sql語句,我這裡做的是:将report表的數量存儲到變量totalrowcount中,是以sql語句寫入,select

count(1) from report

結果集:單行

在結果集欄目做如下的設定,這樣才可以讓變量totalrowcount接收到sql語句的結果

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

4)繼續建立一個sql任務

從左側的控件欄目繼續拉入一個sql任務 

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

在這裡的sql statement 裡面,我們要明确我要做的是将變量totalrowcount 和包的packagename

,在這裡,如果你要将變量輸入,統一都用 “?” 加以代替變量的位置(占位符),語句寫好,接下來就是輸入參數:

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

這裡需要注意的是,你必須按照相應的變量位置,變量類型,順序添加你所對應的變量.

5)編輯限制,當腳本執行成功并且totalrowcount>0的時候,執行插入任務!

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

ok,整體執行一下看是否成功,檢視t_reportlist資料也存在

SSIS從理論到實戰,再到應用(3)----SSIS包的變量,限制,常用容器SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

繼續閱讀