上期回顧:
SSIS從理論到實戰,再到應用(2)----SSIS包的控制流
首先我們來看看包里面的變量
SSIS包變量分為兩種,一種是系統的內置變量,是一個SSIS包初使化都會自帶的,一種是用戶自己定義的變量。
在SSIS包中,常用的變量的類型包含以下:Int32,String,Boolean,DateTime,Object......
二,讓我們來看看包里面的約束(線)
如圖中所示的線就是約束,官方的解釋是這樣的:優先約束在控制流中鏈接包中的可執行文件、容器和任務,並指定決定可執行文件是否運行的條件。在圖中的表達就是,當“得到變量值”這一步執行成功后,並且滿足優先約束中的條件的時候,才會執行”插入表變量“這一步。
先上一份官方的關於約束的解釋:
求值運算
指定優先約束使用的求值運算。 運算包括:“約束”、“表達式”、“表達式和約束”和“表達式或約束”。
值
指定約束值:“成功”、“失敗”或“完成”。
注意:
優先約束線的含義:綠色表示“成功”,突出顯示表示“失敗”,藍色表示“完成”。
表達式
如果使用運算“表達式”、“表達式和約束”或“表達式或約束”,則鍵入一個表達式或啟動表達式生成器來創建表達式。 表達式的計算結果必須為布爾值。
測試
驗證表達式。
邏輯與
選擇此選項可以指定:同一個可執行文件的多個優先約束必須一起計算。 所有約束的計算結果都必須為 True。
注意
這種類型的優先約束顯示為綠色、突出顯示或藍色實線。
邏輯或
選擇此選項可以指定:同一個可執行文件的多個優先約束必須一起計算。 至少必須有一個約束的計算結果為 True。
注意
這種類型的優先約束顯示為綠色、突出顯示或藍色點線。
結合以上的解釋,我們來做這樣一個package:現有[Report]表一張,當發現Report表數據量大於0時,將Report表的總行數插入到Report歷史表T_ReportHist中。
1)新增加一個變量TotalRowCount存儲Report表的總量
2)新建一個SQL 鏈接器
3)先建一個SQL任務
拖入到右邊的圖形界面區,雙擊打開這個控件的配置界面:
在常規欄下可以做如下的配置:
ConnectionType:選中ADO.NET
Connection:選中我們在連接管理器中先添加的DST_BITEST
SqlStatement:在這里我們要輸入我們要使用的sql語句,我這里做的是:將Report表的數量存儲到變量TotalRowCount中,所以SQL語句寫入,select count(1) from Report
結果集:單行
在結果集欄目做如下的設置,這樣才可以讓變量TotalRowCount接收到sql語句的結果
4)繼續新建一個sql任務
從左側的控件欄目繼續拉入一個sql任務
在這里的SQL statement 里面,我們要明確我要做的是將變量TotalRowCount 和包的PackageName ,在這里,如果你要將變量輸入,統一都用 “?” 加以代替變量的位置(占位符),語句寫好,接下來就是輸入參數:
這里需要注意的是,你必須按照相應的變量位置,變量類型,順序添加你所對應的變量.
5)編輯約束,當腳本執行成功並且TotalRowCount>0的時候,執行插入任務!
Ok,整體執行一下看是否成功,查看T_ReportList數據也存在