亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

基于SSIS 事件的向上傳遞(詳解)

2024-08-31 01:05:16
字體:
來源:轉載
供稿:網友

在SSIS中,Package是Task組件的有序組合,具有層次結構,Package處于層次結構的頂層(Root Level),對于父子包結構,父包(Parent Package)通過Execute Package Task組件調用其他Package,被調用的Package是子包,父包是子包的上層級別,最頂層的Package,處于層次結構的頂層,叫做根包(Root Package);容器(Container)組件包含其他Task組件,容器是被包含的Task組件的父級別(Parent Level);Task組件是層次結構的最底層,處于葉級別(Leaf Level)。事件就是沿著Package的層次結構向上傳遞的。

在Package中,每一個Task組件都是一個可執行程序(Executable),所有的數據處理任務都是由Task組件完成的。在Package運行(runtime)時,SSIS引擎為了監控和追蹤Task組件的運行狀態,預先創建了12個系統事件(Event),這些事件都是在Package運行時(runtime)被可執行程序(Executable)觸發的,每個事件都會產生相應的消息,用于描述Executable的運行狀態,供開發工程師對Package進行調試和性能調優。一旦有事件被觸發,SSIS會執行相應的事件處理程序(Event Handler),SSIS為每個事件都創建了默認的事件處理程序,命名規范是:On+EventName,用戶可以創建自定義的事件處理程序,以擴展Package的功能,使Package在運行時更容易管理,以完成數據處理任務。在ETL開發中,最常用的事件是錯誤(Error)事件,該事件在Executable運行出現錯誤時觸發,對應的事件處理程序是OnError。

在Package的層次結構中,事件處理具有向上傳遞(Propagate)的特性。發生在Task組件的事件,首先會被該Task組件的Event Handler捕獲和處理;如果該Task組件沒有創建Event Handler,那么SSIS把該Event向上傳遞到其父級別的Executable,由其父級別的Event Handler來處理;如果該Executable有Event Handler,那么由該Event Handler負責響應和處理該事件。事件會依次向上傳遞,直到事件被處理,或者傳遞到頂層被默認處理,事件向上傳遞的頂層是根包(Root Package)。

引用MSDN官方文檔的例子,Package的層次結構如下圖所示:

SSIS,事件,向上傳遞

在層次結構中,如果相應的Task組件沒有定義事件處理程序,那么事件向上傳遞的過程如下圖所示:

SSIS,事件,向上傳遞

注:事件向上傳遞的條件是沒有創建自定義的事件處理程序,默認情況下,該圖示有誤,事件被Event Handler處理之后,將繼續向上傳遞,我會在下文詳細解釋。

MSDN對圖示做了說明:

If an event has no event handler, the event is raised to the next container up the container hierarchy in a package. If this container has an event handler, the event handler runs in response to the event. If not, the event is raised to the next container up the container hierarchy. Only the package has an event handler, for its OnError event. If an error occurs when the Execute SQL task runs, the OnError event handler for the package runs. 

把事件依次向上傳遞的特性,是由事件處理程序(Event Handler)的系統變量 Propagate 控制的,變量Propagate的默認值是True,這意味著,默認情況下,該事件將會被傳遞到上層級別的Event Handler中進行處理。有一個例外是在父子包結構中,子Package在進行包驗證(Validation)時,不管子包的Propagate變量的值如何設置,都會把驗證事件傳遞到父包中,父包繼續執行驗證。

當前Task組件必須創建事件處理程序,才能查看和修改變量Propagate的值。如果把事件處理程序(Event Handler)的Propagate變量設置為False,那么該事件只會被當前的事件處理程序處理和響應,不會被傳遞到上層級別的事件處理程序中。但是,如果沒有為“肇事”的Task組件創建事件處理程序(Event Handler),那么事件總是向上傳遞,直到被事件處理程序響應,如果Package的層次結構沒有定義任何事件處理程序,那么事件最終被根包(Root Package)默認處理。

一,錯誤事件處理程序(OnError)向上傳遞

默認情況下,當前Task組件的事件處理程序中把錯誤(Error)事件處理之后,SSIS引擎仍然把錯誤事件向上層事件處理程序傳遞,直到包層次結構的最頂層,如下圖,在ChildPackage的Package級別和Executable級別上分別創建了OnError事件處理程序,Executable級別是child Execute SQL Task:

SSIS,事件,向上傳遞

執行Package,在child Execute SQL Task中觸發錯誤事件,被該Task的事件處理程序捕獲和處理,下圖是Executable級別的OnError事件處理程序,其成功執行一個Task:

SSIS,事件,向上傳遞

但是,錯誤事件沒有停止,而是繼續向上傳遞,被其直接上級,也就是Package級別的OnError事件處理程序捕獲,如下圖,來自子Task組件的錯誤事件被父級處理之后,Package仍然報錯,錯誤消息是:Package execution completed with error.

SSIS,事件,向上傳遞

SSIS,事件,向上傳遞

錯誤事件處理程序把錯誤事件(Error)向上傳遞(Propagate)的過程類似“冒泡”,從觸發錯誤事件的“肇事”Task組件開始,逐級向上傳遞到最頂層的可執行程序(Executable),最頂層的Executable是 Package 本身。這意味著,如果在Package 級別定義了一個錯誤事件處理程序(OnError),每當Package中的任意一個Task組件觸發錯誤事件(Error),最終都會觸發Package級別的錯誤事件處理程序。在父子包結構中,如果父Package通過Execute Package Task調用子Package,那么,錯誤事件會發生相同的過程,子Package的錯誤事件會向上傳遞(Propagate)到父Package中。

二,禁用錯誤事件的向上傳遞

如果想要禁用事件的向上傳遞過程,可以在Task組件的事件處理程序中,把系統變量Propagate設置為False,這樣,事件將不再向上傳遞,只觸發當前Task組件的事件處理程序,只有在Task組件中創建事件處理程序之后,才能修改系統變量Propagate的默認值。

1,修改系統變量Propagate的默認值

step1,呈現系統變量

打開Event Handlers Tab,在Variables 窗體中,點擊網格選項(Grid Options)按鈕,打開Variable Grid Options 窗體,在Filter選項中勾選"Show system variables",點擊“OK”,返回到Variables窗體:

SSIS,事件,向上傳遞

SSIS,事件,向上傳遞

step2,設置Propagate的值

在 Variables 窗體中,找到 Propagate 系統變量(Scope是OnError),把Value設置為False

SSIS,事件,向上傳遞

2,禁用事件處理的向上傳遞

禁用Task組件的事件處理的向上傳遞(Propagate)特性之后,在當前Task組件中觸發的事件,只會被當前Task組件的事件處理程序捕獲和處理,而不傳遞到上層Task組件的事件處理程序。

再次執行Package,由于錯誤事件是被child Execute SQL Task觸發的,其事件處理程序自動捕獲并處理該Error事件:

SSIS,事件,向上傳遞

而Package級別的事件處理程序沒有捕獲到Error事件,Package沒有執行OnError事件處理程序,最終的執行結果是:Package execution completed with success。

SSIS,事件,向上傳遞

SSIS,事件,向上傳遞

三,沒有創建事件處理程序

如果沒有為Task組件創建事件處理程序(Event Handler),那么事件總是從當前Task組件向上傳遞。用戶創建事件處理程序,并不意味著,需要在其中添加Task組件,做數據處理任務,空的事件處理程序是允許的。在空的事件處理程序中把系統變量Propagate設置為False,那么事件將不會向上傳遞,也不會被顯式處理,錯誤消息仍然會被SSISDB記錄,但強烈建議不要這樣做。

參考文檔:

Integration Services (SSIS) Event Handlers

System Variables

以上這篇基于SSIS 事件的向上傳遞(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美色图片| 亚洲精品99久久久久中文字幕| 日韩欧美精品免费在线| 欧美日韩美女在线观看| 午夜精品一区二区三区视频免费看| 日韩精品视频免费| 亚洲另类图片色| 久久亚洲国产精品| 91精品国产色综合| 国产亚洲精品综合一区91| 久久99精品久久久久久青青91| 亚洲精品美女久久久| 亚洲精品一区av在线播放| 国语自产偷拍精品视频偷| 日韩成人激情视频| 久久频这里精品99香蕉| 亚洲国产一区自拍| 97人人做人人爱| 午夜欧美大片免费观看| 亚洲娇小xxxx欧美娇小| 欧美午夜性色大片在线观看| 国内精品久久久| 久久好看免费视频| 欧美中文字幕第一页| 欧美成人精品激情在线观看| 神马久久桃色视频| 伊人久久久久久久久久久久久| 日韩av片电影专区| 热99精品里视频精品| 色小说视频一区| 日韩欧美视频一区二区三区| 久久精品国产96久久久香蕉| 欧美区二区三区| 亚洲一区二区三区成人在线视频精品| 色综合久久中文字幕综合网小说| 亚洲电影免费观看高清完整版在线观看| 欧美wwwwww| 国产精品夜色7777狼人| 国产在线拍偷自揄拍精品| 精品亚洲一区二区三区在线播放| 91嫩草在线视频| 久久精品久久久久久| 欧美黑人视频一区| 欧美性受xxx| 亚洲视频axxx| 亚洲国产成人久久综合| 欧美xxxx14xxxxx性爽| 亚洲欧美视频在线| 亚洲福利视频在线| 麻豆一区二区在线观看| 一区二区三区视频免费在线观看| 亚洲免费伊人电影在线观看av| 欧美大成色www永久网站婷| 亚洲精品国产精品自产a区红杏吧| 久久影视免费观看| 91精品国产91久久久久久| 国产精品久久久久久亚洲影视| 欧美激情精品久久久久久久变态| 欧美大片在线看免费观看| 91亚洲永久免费精品| 久久免费少妇高潮久久精品99| 92版电视剧仙鹤神针在线观看| 国产精品美女久久久久久免费| 国产精品jizz在线观看麻豆| 欧美专区在线播放| 精品呦交小u女在线| 日韩在线视频观看正片免费网站| 日韩精品在线视频| 欧美亚洲在线观看| 欧美小视频在线| 亚洲日韩欧美视频一区| 日韩中文视频免费在线观看| 色哟哟入口国产精品| 欧美伦理91i| 亚洲综合小说区| 欧美在线免费观看| 97在线免费视频| 国产精品久久91| 欧美日韩中文字幕在线视频| 国产精品丝袜白浆摸在线| 国产成+人+综合+亚洲欧洲| 国产精欧美一区二区三区| 蜜月aⅴ免费一区二区三区| 日韩欧美aⅴ综合网站发布| 欧美精品中文字幕一区| 欧美三级欧美成人高清www| 91国产中文字幕| 国产日韩欧美视频在线| 国产精品视频久久久久| 日韩免费av在线| 久久久久久久久久久免费精品| 欧美一级黄色网| 亚洲国产欧美一区二区三区同亚洲| 欧美性猛交丰臀xxxxx网站| 欧美性黄网官网| 国产精品91一区| 啊v视频在线一区二区三区| 久久久久成人精品| 国产91ⅴ在线精品免费观看| 亚洲高清久久网| 欧美午夜xxx| 亚洲女同性videos| 成人精品一区二区三区| 俺去亚洲欧洲欧美日韩| 欧美日韩免费观看中文| www.亚洲一二| 日韩成人性视频| 欧美精品手机在线| 91国语精品自产拍在线观看性色| 国产午夜精品视频| 精品伊人久久97| 国产精品久久久久久超碰| 成人免费午夜电影| 日韩精品久久久久久久玫瑰园| 国产又爽又黄的激情精品视频| 亚洲综合在线中文字幕| 超碰91人人草人人干| 国产精品久久久精品| 日韩精品电影网| 国产精品久久久久99| 日韩成人久久久| 国产精品自在线| 精品女同一区二区三区在线播放| 亚洲欧美日韩精品久久| 国产一区二区三区四区福利| 亚洲国产精品999| 欧美性猛交xxxxx免费看| 欧美极品少妇xxxxⅹ免费视频| 亲爱的老师9免费观看全集电视剧| 欧美性xxxx极品高清hd直播| 国内精品久久久久久久久| 亚洲第一精品自拍| 在线观看国产精品91| 欧美高清在线视频观看不卡| 久久中文字幕一区| 国内精品国产三级国产在线专| 精品亚洲国产视频| 欧美高清一级大片| 国产一区二区免费| 亚洲精品99久久久久| 久久色免费在线视频| 韩国精品美女www爽爽爽视频| 九九九久久久久久| 久久精视频免费在线久久完整在线看| 91av视频在线播放| 超碰97人人做人人爱少妇| 91免费国产网站| 欧洲亚洲妇女av| 欧美精品videosex牲欧美| 日韩欧美在线看| 亚洲欧洲日产国产网站| 国产99久久精品一区二区永久免费| 欧美日韩国产精品一区| 亚洲欧美国产一本综合首页| 欧美在线观看网址综合| 国产精品自拍小视频| 欧美性感美女h网站在线观看免费| 中文日韩在线视频| 亚洲国产精品久久91精品| 韩国视频理论视频久久| 国产一区二区三区视频在线观看| 欧美激情18p| 国产日韩av在线| 国产色婷婷国产综合在线理论片a|