1. 程式人生 > >SSIS從理論到實戰,再到應用(3)----SSIS包的變數,約束,常用容器 SSIS從理論到實戰,再到應用(2)----SSIS包的控制流

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

上期回顧:

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資料也存在