久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SSIS中如何實(shí)現(xiàn)延遲驗(yàn)證

共計(jì) 3039 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

這篇文章給大家分享的是有關(guān) SSIS 中如何實(shí)現(xiàn)延遲驗(yàn)證的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。

驗(yàn)證是一個(gè)事件,該事件在 Package 執(zhí)行時(shí),第一個(gè)被觸發(fā),驗(yàn)證能夠避免 SSIS 引擎執(zhí)行一個(gè)有異常的 Package 或 Task。延遲驗(yàn)證(DelayValidation)是把驗(yàn)證操作延遲到 Package 真正運(yùn)行(run-time)時(shí)開(kāi)始執(zhí)行,當(dāng)禁用延遲驗(yàn)證時(shí),一旦驗(yàn)證操作返回錯(cuò)誤(Error)或警告(Warning),Package 就不會(huì)繼續(xù)執(zhí)行下去。在更新海量的數(shù)據(jù)時(shí),通常需要用到暫存表把遠(yuǎn)端數(shù)據(jù)加載到本地,這就需要在 Package 執(zhí)行之后,創(chuàng)建暫存表(staging table);在 Package 執(zhí)行之后,刪除暫存表,當(dāng)禁用延遲驗(yàn)證時(shí)。當(dāng)禁用延遲驗(yàn)證時(shí),驗(yàn)證操作在 Package 執(zhí)行之前,會(huì)檢測(cè)暫存表是否存在,由于暫存表需要在 Package 執(zhí)行之后創(chuàng)建,因此,驗(yàn)證事件發(fā)出錯(cuò)誤消息,Package 停止運(yùn)行,這對(duì)這種情況,必須使用延遲驗(yàn)證,在真正引用到暫存表時(shí),延遲暫存表是否存在。

一,延遲驗(yàn)證屬性

延遲驗(yàn)證屬性作用于 Package,Task,容器(Container)和鏈接管理器(Connection Manager),默認(rèn)情況下,禁用延遲驗(yàn)證,這就意味著,在 Package 執(zhí)行時(shí),首先驗(yàn)證 Package,Task,容器和鏈接管理器引用的對(duì)象是否有效,如果有任何對(duì)象不存在,那么驗(yàn)證失敗,Package 停止運(yùn)行。

在 Package 開(kāi)始執(zhí)行之前,驗(yàn)證 Package,能夠盡早發(fā)現(xiàn)錯(cuò)誤,避免浪費(fèi)系統(tǒng)資源去執(zhí)行一個(gè)必定會(huì)失敗的 Package,合理配置,會(huì)帶來(lái)性能的優(yōu)化。

二,驗(yàn)證方式

按照驗(yàn)證的執(zhí)行順序來(lái)看,Package 包含兩種類型的驗(yàn)證方式:

Package Validation:在 Package 執(zhí)行時(shí),首先驗(yàn)證 Package 及其包含的所有組件,是 Package 級(jí)別的驗(yàn)證;

組件驗(yàn)證:組件級(jí)別的驗(yàn)證,包含 Task , Connection Manager 和 Container,在組件開(kāi)始執(zhí)行之前,驗(yàn)證組件中引用對(duì)象的有效性。

驗(yàn)證分為兩個(gè)階段(Phrase),首先進(jìn)行 Package 級(jí)別的驗(yàn)證,而后進(jìn)行組件級(jí)別的驗(yàn)證:

Package 級(jí)別的驗(yàn)證包含組件級(jí)別的驗(yàn)證,如果禁用延遲驗(yàn)證,那么組件級(jí)別的驗(yàn)證會(huì)執(zhí)行兩次,這在設(shè)計(jì) Package 時(shí),不是一個(gè)好的選擇,這會(huì)增加 Package 的驗(yàn)證時(shí)間,還會(huì)增加每一次打開(kāi) Package 進(jìn)行編輯的時(shí)間。而啟用延遲驗(yàn)證,這會(huì)禁用了 Package 級(jí)別的驗(yàn)證,以至于在 Package 的設(shè)計(jì)時(shí)(design-time),只執(zhí)行組件級(jí)別的驗(yàn)證,注意,任何情況下,無(wú)法禁用組件級(jí)別的驗(yàn)證。

通常情況下,對(duì)一個(gè)完成開(kāi)發(fā)的 Package 啟用延遲驗(yàn)證,是一個(gè)好的選擇,這會(huì)減少 Package 整體的執(zhí)行時(shí)間,因?yàn)樘^(guò)了 Package 級(jí)別的驗(yàn)證。

1,禁用延遲驗(yàn)證

禁用 Package 的延遲驗(yàn)證,需要設(shè)置 Package 的 DelayValidation 屬性值為 False,默認(rèn)情況下,Packag 會(huì)禁用延遲驗(yàn)證,如下圖所示:

那么在 Package 開(kāi)始運(yùn)行之后,第一件事就是開(kāi)始執(zhí)行 Package Validation,當(dāng) Package 級(jí)別的驗(yàn)證操作完成之后,開(kāi)始驗(yàn)證 Package 包含的各個(gè) Task 等,如果驗(yàn)證發(fā)現(xiàn)錯(cuò)誤,Package 不會(huì)被執(zhí)行,直接報(bào)錯(cuò)。

2,啟用延遲驗(yàn)證

啟用 Package 的延遲驗(yàn)證,需要設(shè)置 Package 的 DelayValidation 屬性值為 True,如下圖所示:

當(dāng)啟用延遲驗(yàn)證時(shí),Package 會(huì)執(zhí)行下去,知道運(yùn)行到特定的組件時(shí),才會(huì)執(zhí)行組件驗(yàn)證,如果組件驗(yàn)證失敗,那么拋出錯(cuò)誤消息,停止 Package 的運(yùn)行。

組件驗(yàn)證發(fā)生真正執(zhí)行組件,如果上流組件新建一個(gè)暫存表(staging table),下游組件引用該暫存表,并不會(huì)出現(xiàn)異常,這是因?yàn)樵谠摻M件進(jìn)行驗(yàn)證時(shí),該暫存表已經(jīng)存在。

三,延遲驗(yàn)證屬性的層次結(jié)構(gòu)

在 Package 級(jí)別上設(shè)置 DelayValidation 屬性并不能阻止打開(kāi) Package 時(shí)的最初的驗(yàn)證過(guò)程,它只是在運(yùn)行包時(shí)延遲 Package 級(jí)別的驗(yàn)證,這就意味著 Package 將繼續(xù)運(yùn)行,但是當(dāng)打開(kāi) Package 時(shí)警報(bào)仍然出現(xiàn)。如果想阻止打開(kāi) Package 時(shí)的驗(yàn)證,那么必須把 Task 級(jí)別上的 DelayValidation 屬性設(shè)置為 True。

避免驗(yàn)證鏈接管理器,有時(shí),是一個(gè)非常節(jié)省開(kāi)發(fā)時(shí)間的選擇。有時(shí)打開(kāi) Package 的過(guò)程會(huì)花費(fèi)很長(zhǎng)的時(shí)間,這可能是因?yàn)樗昧艘粋€(gè)遠(yuǎn)程數(shù)據(jù)源,而數(shù)據(jù)源的響應(yīng)很緩慢,或者鏈接不上。如果我們正在開(kāi)發(fā)一個(gè)包,并且需要經(jīng)常打開(kāi)這個(gè)包,那么我們可能需要花費(fèi)很長(zhǎng)的時(shí)間來(lái)等待 SSIS 驗(yàn)證一個(gè)數(shù)據(jù)源。在這樣的情況下,在任務(wù)級(jí)設(shè)置 DelayValidation 屬性為 True 可以為我們節(jié)省大量的時(shí)間。

示例 1,驗(yàn)證操作只會(huì)驗(yàn)證屬性的完整性

設(shè)置 Package Level 的屬性 DelayValidation=False,Task Level 的屬性 DelayValidation=False

Package 的處理流程如下圖所示,Package 級(jí)別的 Validation 在 Create Staging Table 的 Validation 之前開(kāi)始,在 Insert Data 的 Validation 之后結(jié)束,從圖中能看到 Insert Data 的驗(yàn)證完成,實(shí)際上,驗(yàn)證操作并沒(méi)有檢查出一個(gè)非常簡(jiǎn)單的語(yǔ)法錯(cuò)誤,直到 Task 真正執(zhí)行時(shí),才發(fā)現(xiàn)錯(cuò)誤,這說(shuō)明,驗(yàn)證操作只會(huì)驗(yàn)證 Task 屬性的完整性,效果是有限的。

示例 2,驗(yàn)證操作會(huì)驗(yàn)證引用的對(duì)象是否存在

設(shè)置 Package Level 的屬性 DelayValidation=False,Task Level 的屬性 DelayValidation=False,在 Data Flow Task 中,OLE DB Source 組件從一個(gè)當(dāng)前不存在的表 dbo.delay_test 中 selelct 數(shù)據(jù):

在執(zhí)行 Package 時(shí),SSIS 彈出“Package Validation Error”窗體,這就是 Package 級(jí)別上的驗(yàn)證發(fā)現(xiàn)的錯(cuò)誤:

設(shè)置 Package Level 的屬性 DelayValidation=False,Task Data Flow Task 的屬性 DelayValidation=True,重新執(zhí)行,Package 成功執(zhí)行。

示例 3,打開(kāi) package 的驗(yàn)證

設(shè)置 Package Level 的屬性 DelayValidation=True,Task Level 的屬性 DelayValidation=False,在打開(kāi) Package 時(shí),Task Data Flow Task 上面是有紅色 X 號(hào)的,當(dāng)設(shè)置 Task Level 的屬性 DelayValidation=True 時(shí),在打開(kāi) package 時(shí),Task Data Flow Task 上面的紅色 X 符號(hào)消失,這說(shuō)明,在打開(kāi) Package 時(shí),驗(yàn)證操作已經(jīng)開(kāi)始,并且 Task 級(jí)別的驗(yàn)證屬性會(huì)覆蓋上層的驗(yàn)證。

以上三個(gè)示例說(shuō)明,在打開(kāi) Package,設(shè)計(jì) Package 和運(yùn)行 Package 時(shí),SSIS 引擎都會(huì)對(duì) Package 進(jìn)行驗(yàn)證,并且 Package 的驗(yàn)證操作是優(yōu)層次結(jié)構(gòu)的,底層的延遲驗(yàn)證會(huì)覆蓋上層的延遲驗(yàn)性。

感謝各位的閱讀!關(guān)于“SSIS 中如何實(shí)現(xiàn)延遲驗(yàn)證”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計(jì)3039字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 三台县| 乐清市| 翁牛特旗| 西宁市| 库车县| 仁布县| 固阳县| 衡南县| 买车| 襄樊市| 甘孜| 米林县| 大港区| 广灵县| 乌拉特前旗| 磴口县| 平远县| 扶绥县| 蕉岭县| 太湖县| 开平市| 潍坊市| 新兴县| 铁岭县| 崇文区| 滦南县| 上蔡县| 长兴县| 新营市| 正安县| 冷水江市| 西乌珠穆沁旗| 疏附县| 从江县| 黄山市| 大姚县| 沅陵县| 从化市| 柳江县| 东乌珠穆沁旗| 巧家县|