今天就跟大家聊聊有關(guān)SSIS 中怎么實(shí)現(xiàn)延遲驗(yàn)證,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
墾利網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),墾利網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為墾利1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的墾利做網(wǎng)站的公司定做!
一,延遲驗(yàn)證屬性
延遲驗(yàn)證屬性作用于Package,Task,容器(Container)和鏈接管理器(Connection Manager),默認(rèn)情況下,禁用延遲驗(yàn)證,這就意味著,在Package執(zhí)行時,首先驗(yàn)證Package,Task,容器和鏈接管理器引用的對象是否有效,如果有任何對象不存在,那么驗(yàn)證失敗,Package停止運(yùn)行。
在Package開始執(zhí)行之前,驗(yàn)證Package,能夠盡早發(fā)現(xiàn)錯誤,避免浪費(fèi)系統(tǒng)資源去執(zhí)行一個必定會失敗的Package,合理配置,會帶來性能的優(yōu)化。
二,驗(yàn)證方式
按照驗(yàn)證的執(zhí)行順序來看,Package包含兩種類型的驗(yàn)證方式:
Package Validation:在Package執(zhí)行時,首先驗(yàn)證Package及其包含的所有組件,是Package級別的驗(yàn)證;
組件驗(yàn)證:組件級別的驗(yàn)證,包含Task , Connection Manager和Container,在組件開始執(zhí)行之前,驗(yàn)證組件中引用對象的有效性。
驗(yàn)證分為兩個階段(Phrase),首先進(jìn)行Package級別的驗(yàn)證,而后進(jìn)行組件級別的驗(yàn)證:
Package級別的驗(yàn)證包含組件級別的驗(yàn)證,如果禁用延遲驗(yàn)證,那么組件級別的驗(yàn)證會執(zhí)行兩次,這在設(shè)計Package時,不是一個好的選擇,這會增加Package的驗(yàn)證時間,還會增加每一次打開Package進(jìn)行編輯的時間。而啟用延遲驗(yàn)證,這會禁用了Package 級別的驗(yàn)證,以至于在Package的設(shè)計時(design-time),只執(zhí)行組件級別的驗(yàn)證,注意,任何情況下,無法禁用組件級別的驗(yàn)證。
通常情況下,對一個完成開發(fā)的Package啟用延遲驗(yàn)證,是一個好的選擇,這會減少Package整體的執(zhí)行時間,因?yàn)樘^了Package級別的驗(yàn)證。
1,禁用延遲驗(yàn)證
禁用Package的延遲驗(yàn)證,需要設(shè)置Package的DelayValidation屬性值為False,默認(rèn)情況下,Packag會禁用延遲驗(yàn)證,如下圖所示:
那么在Package開始運(yùn)行之后,第一件事就是開始執(zhí)行Package Validation,當(dāng)Package級別的驗(yàn)證操作完成之后,開始驗(yàn)證Package包含的各個Task等,如果驗(yàn)證發(fā)現(xiàn)錯誤,Package不會被執(zhí)行,直接報錯。
2,啟用延遲驗(yàn)證
啟用Package的延遲驗(yàn)證,需要設(shè)置Package的DelayValidation屬性值為True,如下圖所示:
當(dāng)啟用延遲驗(yàn)證時,Package會執(zhí)行下去,知道運(yùn)行到特定的組件時,才會執(zhí)行組件驗(yàn)證,如果組件驗(yàn)證失敗,那么拋出錯誤消息,停止Package的運(yùn)行。
組件驗(yàn)證發(fā)生真正執(zhí)行組件,如果上流組件新建一個暫存表(staging table),下游組件引用該暫存表,并不會出現(xiàn)異常,這是因?yàn)樵谠摻M件進(jìn)行驗(yàn)證時,該暫存表已經(jīng)存在。
三,延遲驗(yàn)證屬性的層次結(jié)構(gòu)
在Package級別上設(shè)置DelayValidation屬性并不能阻止打開Package時的最初的驗(yàn)證過程,它只是在運(yùn)行包時延遲Package級別的驗(yàn)證,這就意味著Package將繼續(xù)運(yùn)行,但是當(dāng)打開Package時警報仍然出現(xiàn)。如果想阻止打開Package時的驗(yàn)證,那么必須把Task級別上的DelayValidation屬性設(shè)置為True。
避免驗(yàn)證鏈接管理器,有時,是一個非常節(jié)省開發(fā)時間的選擇。有時打開Package的過程會花費(fèi)很長的時間,這可能是因?yàn)樗昧艘粋€遠(yuǎn)程數(shù)據(jù)源,而數(shù)據(jù)源的響應(yīng)很緩慢,或者鏈接不上。如果我們正在開發(fā)一個包,并且需要經(jīng)常打開這個包,那么我們可能需要花費(fèi)很長的時間來等待SSIS驗(yàn)證一個數(shù)據(jù)源。在這樣的情況下,在任務(wù)級設(shè)置DelayValidation屬性為True可以為我們節(jié)省大量的時間。
示例1,驗(yàn)證操作只會驗(yàn)證屬性的完整性
設(shè)置Package Level的屬性DelayValidation=False,Task Level的屬性DelayValidation=False
Package的處理流程如下圖所示,Package級別的Validation在Create Staging Table的Validation之前開始,在Insert Data的Validation之后結(jié)束,從圖中能看到Insert Data的驗(yàn)證完成,實(shí)際上,驗(yàn)證操作并沒有檢查出一個非常簡單的語法錯誤,直到Task真正執(zhí)行時,才發(fā)現(xiàn)錯誤,這說明,驗(yàn)證操作只會驗(yàn)證Task屬性的完整性,效果是有限的。
示例2,驗(yàn)證操作會驗(yàn)證引用的對象是否存在
設(shè)置Package Level的屬性DelayValidation=False,Task Level的屬性DelayValidation=False,在Data Flow Task中,OLE DB Source組件從一個當(dāng)前不存在的表dbo.delay_test中selelct數(shù)據(jù):
在執(zhí)行Package時,SSIS彈出“Package Validation Error”窗體,這就是Package級別上的驗(yàn)證發(fā)現(xiàn)的錯誤:
設(shè)置Package Level的屬性DelayValidation=False,Task Data Flow Task的屬性DelayValidation=True,重新執(zhí)行,Package成功執(zhí)行。
示例3,打開package的驗(yàn)證
設(shè)置Package Level的屬性DelayValidation=True,Task Level的屬性DelayValidation=False,在打開Package時,Task Data Flow Task上面是有紅色X號的,當(dāng)設(shè)置Task Level的屬性DelayValidation=True時,在打開package時,Task Data Flow Task上面的紅色X符號消失,這說明,在打開Package時,驗(yàn)證操作已經(jīng)開始,并且Task 級別的驗(yàn)證屬性會覆蓋上層的驗(yàn)證。
以上三個示例說明,在打開Package,設(shè)計Package和運(yùn)行Package時,SSIS引擎都會對Package進(jìn)行驗(yàn)證,并且Package的驗(yàn)證操作是
看完上述內(nèi)容,你們對SSIS 中怎么實(shí)現(xiàn)延遲驗(yàn)證有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
標(biāo)題名稱:SSIS中怎么實(shí)現(xiàn)延遲驗(yàn)證
分享路徑:http://www.chinadenli.net/article18/googgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站策劃、定制網(wǎng)站、標(biāo)簽優(yōu)化、ChatGPT、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)