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

SSIS 中怎么實現延遲驗證

155次閱讀
沒有評論

共計 2607 個字符,預計需要花費 7 分鐘才能閱讀完成。

今天就跟大家聊聊有關 SSIS 中怎么實現延遲驗證,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一,延遲驗證屬性

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

在 Package 開始執行之前,驗證 Package,能夠盡早發現錯誤,避免浪費系統資源去執行一個必定會失敗的 Package,合理配置,會帶來性能的優化。

二,驗證方式

按照驗證的執行順序來看,Package 包含兩種類型的驗證方式:

Package Validation:在 Package 執行時,首先驗證 Package 及其包含的所有組件,是 Package 級別的驗證;

組件驗證:組件級別的驗證,包含 Task , Connection Manager 和 Container,在組件開始執行之前,驗證組件中引用對象的有效性。

驗證分為兩個階段(Phrase),首先進行 Package 級別的驗證,而后進行組件級別的驗證:

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

通常情況下,對一個完成開發的 Package 啟用延遲驗證,是一個好的選擇,這會減少 Package 整體的執行時間,因為跳過了 Package 級別的驗證。

1,禁用延遲驗證

禁用 Package 的延遲驗證,需要設置 Package 的 DelayValidation 屬性值為 False,默認情況下,Packag 會禁用延遲驗證,如下圖所示:

那么在 Package 開始運行之后,第一件事就是開始執行 Package Validation,當 Package 級別的驗證操作完成之后,開始驗證 Package 包含的各個 Task 等,如果驗證發現錯誤,Package 不會被執行,直接報錯。

2,啟用延遲驗證

啟用 Package 的延遲驗證,需要設置 Package 的 DelayValidation 屬性值為 True,如下圖所示:

當啟用延遲驗證時,Package 會執行下去,知道運行到特定的組件時,才會執行組件驗證,如果組件驗證失敗,那么拋出錯誤消息,停止 Package 的運行。

組件驗證發生真正執行組件,如果上流組件新建一個暫存表(staging table),下游組件引用該暫存表,并不會出現異常,這是因為在該組件進行驗證時,該暫存表已經存在。

三,延遲驗證屬性的層次結構

在 Package 級別上設置 DelayValidation 屬性并不能阻止打開 Package 時的最初的驗證過程,它只是在運行包時延遲 Package 級別的驗證,這就意味著 Package 將繼續運行,但是當打開 Package 時警報仍然出現。如果想阻止打開 Package 時的驗證,那么必須把 Task 級別上的 DelayValidation 屬性設置為 True。

避免驗證鏈接管理器,有時,是一個非常節省開發時間的選擇。有時打開 Package 的過程會花費很長的時間,這可能是因為它引用了一個遠程數據源,而數據源的響應很緩慢,或者鏈接不上。如果我們正在開發一個包,并且需要經常打開這個包,那么我們可能需要花費很長的時間來等待 SSIS 驗證一個數據源。在這樣的情況下,在任務級設置 DelayValidation 屬性為 True 可以為我們節省大量的時間。

示例 1,驗證操作只會驗證屬性的完整性

設置 Package Level 的屬性 DelayValidation=False,Task Level 的屬性 DelayValidation=False

Package 的處理流程如下圖所示,Package 級別的 Validation 在 Create Staging Table 的 Validation 之前開始,在 Insert Data 的 Validation 之后結束,從圖中能看到 Insert Data 的驗證完成,實際上,驗證操作并沒有檢查出一個非常簡單的語法錯誤,直到 Task 真正執行時,才發現錯誤,這說明,驗證操作只會驗證 Task 屬性的完整性,效果是有限的。

示例 2,驗證操作會驗證引用的對象是否存在

設置 Package Level 的屬性 DelayValidation=False,Task Level 的屬性 DelayValidation=False,在 Data Flow Task 中,OLE DB Source 組件從一個當前不存在的表 dbo.delay_test 中 selelct 數據:

在執行 Package 時,SSIS 彈出“Package Validation Error”窗體,這就是 Package 級別上的驗證發現的錯誤:

設置 Package Level 的屬性 DelayValidation=False,Task Data Flow Task 的屬性 DelayValidation=True,重新執行,Package 成功執行。

示例 3,打開 package 的驗證

設置 Package Level 的屬性 DelayValidation=True,Task Level 的屬性 DelayValidation=False,在打開 Package 時,Task Data Flow Task 上面是有紅色 X 號的,當設置 Task Level 的屬性 DelayValidation=True 時,在打開 package 時,Task Data Flow Task 上面的紅色 X 符號消失,這說明,在打開 Package 時,驗證操作已經開始,并且 Task 級別的驗證屬性會覆蓋上層的驗證。

以上三個示例說明,在打開 Package,設計 Package 和運行 Package 時,SSIS 引擎都會對 Package 進行驗證,并且 Package 的驗證操作是

看完上述內容,你們對 SSIS 中怎么實現延遲驗證有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計2607字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 凤阳县| 山丹县| 长武县| 伽师县| 蕉岭县| 保定市| 怀远县| 江油市| 丰县| 福安市| 新余市| 吴桥县| 尖扎县| 岚皋县| 卢氏县| 巴林右旗| 灵台县| 桦川县| 广河县| 青岛市| 石景山区| 利川市| 琼中| 蓝山县| 高清| 新巴尔虎左旗| 中江县| 大竹县| 和硕县| 托克逊县| 黔南| 邯郸市| 民勤县| 特克斯县| 社会| 合作市| 虞城县| 大庆市| 星子县| 尼勒克县| 永宁县|