SSIS - 5.优先约束
? 一、優先約束和執行邏輯
任務和容器是SSIS中的可執行文件,一個優先約束連接著兩個可執行文件:優先的可執行文件和約束的可執行文件,如下圖。
它的執行邏輯如下圖:
1)先執行優先可執行文件
2)判斷優先約束的結果是否為真
3)若為真,則執行約束可執行文件,否則結束進程
二、優先約束的設置
優先約束的判斷結果取決于優先的可執行文件執行時的返回結果是否與優先約束的設置或表達式結果相匹配。一個可執行文件的執行結果可以是成功或者失敗。優先的可執行文件可以選擇3種執行結果:成功、失敗和完成。下面是優先約束的設置及對應的優先可執行文件執行的返回結果。
?????? 三、下面實際操作一下:
????????1)創建并打開一個SSIS的空白包,定義變量V,數據類型為int32,默認值為1。
2)拖拽一個腳本任務到設計區域,重命名為“Source”,然后瀆復制這個腳本任務并重命名為“Destination”,然后使用優先約束連接,如下圖。
3)執行包,可以看到執行成功了。
4)單擊“停止調試”按鈕關閉執行,打開腳本任務“Source”和“Destination”后可以看到里面的代碼。
?
5)修改腳本任務“Source”中95行的代碼如下。
Dts.TaskResult = (int)ScriptResults.Failure;
6)再執行包,可以看到執行錯誤。這是以為“Source”返回的是“失敗”,而優先約束定義的是執行成功后繼續,這樣,包執行完“Source”任務后就會停止執行。
7)在綠色的線上右鍵,然后“失敗”。
8)再次執行包,可以看到“Destination”任務執行成功了,這是因為“Source”返回的失敗與優先約束中的設置匹配。
9)上圖紅色的箭頭線上右鍵->選擇“編輯...”->打開優先約束編輯器。
在約束選項中,計算操作中包含一下4種:
-
- 約束
- 表達式
- 表達式和約束
- 表達式或約束
10)選擇“表達式和約束”->單擊表達式右側的“...”打開表達式編輯器->寫入表達式"@[User::V]==1"后單擊OK。
11)執行包,"Destination"執行成功。這是由于表達式和約束返回的都是True。圖中“fx”表達優先約束中包含有表達式。
12)右鍵紅色的線->選擇“Success”->將變量V的值改為2,執行包,“Destination”沒有執行,因為表達式@[User::V]==1返回的結果是False。
13)打開優先約束編輯器->修改約束條件為“表達式或約束”。
14)再次執行包,可以看到“Destination”執行成功了,因為約束和表達式是“或”的關系(True || False = True)
?
轉載于:https://www.cnblogs.com/MR-zhang-01/p/9290589.html
總結
以上是生活随笔為你收集整理的SSIS - 5.优先约束的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读懂diff
- 下一篇: 关于requestAnimationFr