執行封裝工作
適用於: SQL Server Azure Data Factory 中的 SSIS Integration Runtime
「執行封裝」工作可讓封裝將其他封裝當做工作流程的一部分執行,以延伸 Integration Services 的企業功能。
您可將「執行封裝」工作用於下列用途:
細分複雜的封裝工作流程。 此工作可讓您將工作流程分解成多個封裝,以方便讀取、測試和維護。 例如,您若是將資料載入星狀結構描述,就可以建立另一個封裝以擴展每一個維度與事實資料表。
重複使用部分封裝。 其他封裝可以重複使用封裝工作流程的各部分。 例如,您可以建置可從不同封裝呼叫的資料擷取模組。 呼叫擷取模組的每個封裝可以執行不同的資料刪除、篩選或彙總作業。
群組工作單位。 工作的單位可以封裝到個別的封裝,並以交易式元件聯結至父封裝的工作流程。 例如,父封裝執行附帶封裝,並根據附帶封裝的成功或失敗認可或回復交易。
控制封裝安全性。 封裝作者只需要多封裝方案的一部分存取權。 您可藉由將封裝分成多個封裝,提供更高的安全性等級,這是因為您可以只將相關封裝的存取權授與給作者。
執行其他封裝的封裝一般稱為父封裝,而父工作流程執行的封裝則稱為子封裝。
Integration Services 包含執行工作流程作業的工作,例如執行可執行檔和批次檔。 如需詳細資訊,請參閱< 執行處理工作>。
執行封裝
「執行封裝」工作可以執行包含父封裝之相同專案中所含的子封裝。 您可以透過將 [ReferenceType] 屬性設定為 [專案參考] ,然後設定 [PackageNameFromProjectReference] 屬性,以便從專案中選取子封裝。
注意
[ReferenceType] 選項是唯讀的,如果尚未將包含封裝的專案轉換為專案部署模型,則該選項設為 [外部參考] 。 部署 Integration Services (SSIS) 專案和套件。
「執行封裝」工作也可執行儲存在 SQL Server msdb 資料庫中的封裝,以及儲存在檔案系統中的封裝。 此工作使用 OLE DB 連接管理員連接到 SQL Server,或使用檔案連接管理員存取檔案系統。 如需詳細資訊,請參閱< OLE DB Connection Manager >和< 般檔案連線管理員>。
「執行封裝」工作也可執行資料庫維護計畫,讓您管理相同 Integration Services 方案中的 SSIS 封裝和資料庫維護計畫。 資料庫維護計畫與 SSIS 封裝類似,不過計畫只能包含資料庫維護工作,而且一律儲存在 msdb 資料庫中。
如果您選擇儲存在檔案系統中的封裝,就必須提供封裝的名稱與位置。 封裝可存在於檔案系統中的任何位置,不必與父封裝位在相同資料夾中。
子封裝可在父封裝的處理序中執行,也可在其自己的處理序中執行。 在其自己的處理序中執行子封裝需要更多記憶體,但是提供更大彈性。 例如,如果子處理序失敗,父處理序可繼續執行。
或者,有時您可能希望父封裝和子封裝當作一個單位一起失敗,或是不要產生其他處理序的額外負擔。 例如,如果子處理序失敗,而父封裝處理序中的後續處理取決於子處理序的成功,則子封裝應該在父封裝的處理序中執行。
依預設,「執行封裝」工作的 ExecuteOutOfProcess 屬性會設定為 False,而且子封裝會在與父封裝的相同處理序中執行。 如果您將此屬性設定為 True,子封裝就會在不同的處理序中執行。 這可能會降低子封裝的啟動速度。 此外,如果您將此屬性設定為 True,則無法在僅限工具安裝中偵錯封裝。 您必須安裝 Integration Services。 如需詳細資訊,請參閱 安裝 Integration Services。
延伸交易
父封裝使用的交易可延伸至子封裝;因此,這兩種封裝執行的工作都能認可或回復。 例如,根據子封裝執行的資料庫插入,可以認可或回復父封裝所執行的資料庫插入,反之亦然。 如需詳細資訊,請參閱< 繼承的事務>。
傳播記錄詳細資料
「執行封裝」工作執行的子封裝不一定會設定為使用記錄,但是子封裝永遠會將記錄的詳細資料轉送給父封裝。 如果「執行封裝」工作設定為使用記錄,則此工作會記錄來自子封裝的記錄詳細資料。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄。
將值傳遞給子封裝
子封裝通常使用由另一個呼叫它的封裝傳遞給它的值,該封裝一般是其父封裝。 使用來自父封裝的值在下列類似狀況中很有用:
將較大工作流程的各個部分指派給不同的封裝。 例如,一個封裝每晚下載資料、摘要資料、指派摘要資料值給變數,然後將值傳遞給另一個封裝進行資料的額外處理。
父封裝會動態協調子封裝中的工作。 例如,父封裝決定本月的天數,並將該數字指派給變數,然後由子封裝執行該次數的工作。
子封裝需要存取由父封裝動態衍生的資料。 例如,父封裝會從資料表擷取資料並將資料列集載入變數,子封裝則會對該資料執行其他作業。
您可以使用下列方法,將值傳遞至子封裝:
封裝組態
Integration Services 提供「父封裝變數」組態的組態類型,可將值從父封裝傳遞至子封裝。 組態建立在子封裝上,並使用父封裝中的變數。 然後,組態會對應至子封裝中的變數,或是子封裝中的物件屬性。 變數也可用在指令碼工作或指令碼元件所用的指令碼中。
參數
您可以設定「執行封裝」工作將父封裝變數或參數 (或專案參數) 對應到子封裝參數。 專案必須使用專案部署模型,而且子封裝必須包含在包含父封裝的相同專案中。 如需詳細資訊,請參閱< 執行封裝工作編輯器>。
注意
如果子封裝參數不區分大小寫,但對應到區分大小寫的父參數,則子封裝將無法執行。
支援下列對應條件:
區分大小寫,子封裝參數對應到區分大小寫的父參數
區分大小寫,子封裝參數對應到不區分大小寫的父參數
不區分大小寫,子封裝參數對應到不區分大小寫的父參數
父封裝變數可在「執行封裝」工作的範圍內定義,或是在諸如封裝的父容器中定義。 如果有多個名稱相同的變數可用,則會使用在「執行封裝」工作範圍內所定義的變數,或是最接近工作範圍的變數。
如需詳細資訊,請參閱 在子封裝中使用變數和參數的值。
存取父封裝變數
子封裝可藉由使用指令碼工作存取父封裝變數。 當你在 [指令碼工作編輯器] 的 [指令碼] 頁面上輸入父封裝變數的名稱時,變數名稱中請勿加上 User: 。 否則,在您執行父封裝時子封裝會找不到該變數。
設定執行封裝工作
您可以透過 SSIS 設計師或以程式設計方式設定屬性。
如需可在 SSIS 設計工具中設定的屬性的詳細資訊,請按下列主題:
如需如何在 SSIS 設計工具中設定這些屬性的詳細資訊,請按下列主題:
以程式設計的方式設定執行封裝工作
如需有關以程式設計方式設定這些屬性的詳細資訊,請按下列主題:
執行封裝工作編輯器
使用「執行封裝工作編輯器」設定「執行封裝」工作。 「執行封裝」工作可讓封裝將其他封裝當做工作流程的一部分執行,以延伸 Integration Services 的企業功能。
您想要做什麼事?
開啟 [執行封裝工作編輯器]
在 Visual Studio 中開啟包含 [執行封裝] 工作的 Integration Services 專案。
以滑鼠右鍵按一下 SSIS 設計師中的工作,然後按一下 [編輯] 。
設定 [一般] 頁面上的 [選項]
名稱
為執行封裝工作提供唯一的名稱。 這個名稱是作為工作圖示中的標籤使用。
注意
工作名稱在封裝內必須是唯一的。
說明
輸入「執行封裝」工作的描述。
設定 [封裝] 頁面上的 [選項]
ReferenceType
為專案中的子封裝選取 [專案參考] 。 為封裝外部的子封裝選取 [外部參考]
注意
[ReferenceType] 選項是唯讀的,如果尚未將包含封裝的專案轉換為專案部署模型,則該選項設為 [外部參考] 。 部署 Integration Services (SSIS) 專案和套件。
密碼
如果子封裝受到密碼保護,請提供子封裝的密碼,或按一下省略符號 ([...]) 按鈕,然後建立子封裝的新密碼。
ExecuteOutOfProcess
指定子封裝是在父封裝的處理序中執行,還是在個別的處理序中執行。 依預設,「執行封裝」工作的 ExecuteOutOfProcess 屬性會設定為 False,而且子封裝會在與父封裝的相同處理序中執行。 如果您將此屬性設定為 [True] ,子封裝就會在不同的處理序中執行。 這可能會降低子封裝的啟動速度。 另外,如果此屬性設定為 [True],則無法在僅限工具安裝中偵錯封裝;您必須安裝 Integration Services 產品。 如需詳細資訊,請參閱安裝 Integration Services。
ReferenceType 動態選項
ReferenceType = 外部參考
位置
選取子封裝的位置。 這個屬性具有下表中所列的選項。
值 | 描述 |
---|---|
SQL Server | 設定 SQL Server 執行個體的位置。 |
檔案系統 | 設定檔案系統的位置。 |
[連接]
選取子封裝的儲存位置類型。
PackageNameReadOnly
顯示封裝名稱。
ReferenceType = 專案參考
PackageNameFromProjectReference
選取專案中包含的封裝,做為子封裝。
位置動態選項
位置 = SQL Server
[連接]
在清單中選取 OLE DB 連線管理員,或按一下 [新增連線…]<> 建立新的連線管理員。
相關主題:OLE DB 連線管理員
PackageName
輸入子封裝的名稱,或按一下省略符號 ([...]),然後找出該封裝。
位置 = 檔案系統
[連接]
在清單中選取檔案連線管理員,或按一下 [新增連線...]<> 建立新的連線管理員。
相關主題:檔案連線管理員
PackageNameReadOnly
顯示封裝名稱。
設定 [參數繫結] 頁面上的 [選項]
您可以將值從父封裝或專案傳遞至子封裝。 專案必須使用專案部署模型,而且子封裝必須包含在包含父封裝的相同專案中。
如需將專案轉換為專案部署模型的資訊,請參閱 部署 Integration Services (SSIS) 專案和套件。
子封裝參數
輸入或選取子封裝參數的名稱。
繫結參數或變數
選取包含您要傳遞到子封裝之值的參數或變數。
加入
按一下此選項可將參數或變數對應到子封裝參數。
移除
按一下此選項可移除參數或變數與子封裝參數之間的對應。