SSIS高級轉換任務—行計數(shù)
在SSIS中的Row Count轉換可以在數(shù)據(jù)流中計算數(shù)據(jù)源的行數(shù)。這種任務必須將行數(shù)保存在一個變量中。這種任務在你不想將數(shù)據(jù)行數(shù)保存在一個物理表中時會很有用。例如在ConditionalSplit任務中使用多個RowCount記錄有多少行被分離出來,每個Row Count將使用變量記錄分支中的數(shù)據(jù)行數(shù),可以將這個變量值記錄在數(shù)據(jù)庫中,作為郵件信息發(fā)送出去,或者在下一個步驟中使用。
一樣這個任務需要使用高級編輯器,這個更加簡單,只需要添加一個變量來存儲行數(shù)。現(xiàn)在設想一個任務只有在數(shù)據(jù)流中的數(shù)據(jù)行數(shù)大于0的情況下才會執(zhí)行,可以將此類推到任何按照不同條件執(zhí)行task 的情況,在這里我們只簡單舉例說明情況。
- 創(chuàng)建一個包命名為RowCountExample,添加一個Data Flow task
- 添加一個Int32類型的變量MyRowCount,保證變量在的范圍是整個包
- 添加一個OLE DB DataSource將他指向數(shù)據(jù)庫AdventureWorks中的表ErrorLog
- 添加一個RowCount任務,雙擊打開編輯界面設置VariableName屬性為MyRowCount,最終界面如下圖1

圖1 - 切換到Control Flow界面添加一個Execute SQL Task,設置連接到表AdventureWorks,設置SQLStatement為SELECT 1。這個任務沒有任何意義只是用來演示RowCount的用法
- 將Data Flow task和Execute SQL task 連接起來,右擊他們之間的連線選擇編輯
- 修改Precedence Constraint 中設置Evaluation Operation為Expression,設置表達式為@MyRowCount>0。最終界面如圖2

圖2 - 執(zhí)行這個包發(fā)現(xiàn)Execute SQL任務不會執(zhí)行,這是因為ErrorLog表中沒有一行數(shù)據(jù),如果隨意向ErrorLog表中添加以行數(shù)據(jù)這個包就可以正確執(zhí)行了。
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯(lián)系冬天里的一把火
浙公網安備 33010602011771號