指令碼元件
指令碼元件可裝載指令碼,並讓封裝包含及執行自訂指令碼。 您可在封裝中使用指令碼元件以達到下列目的:
套用多個轉換至資料,而不使用資料流程中的多個轉換。 例如,指令碼可以加總兩個資料行中的值,然後計算總和的平均。
存取現有 .NET 組件中的商務規則。 例如,指令碼可以套用商務規則,以指定在
Income
資料行中有效的值範圍。除了 Integration Services 運算式文法所提供的函數和運算子外,您也可以使用自訂公式和函數。 例如,使用 LUHN 公式驗證信用卡號碼。
驗證資料行資料並略過包含無效資料的記錄。 例如,指令碼可評估合理的郵資金額,並略過金額過高或過低的記錄。
指令碼元件提供簡單快速的方式,用來將自訂函數包含在資料流程中。 不過,如果您計劃在多個封裝中重複使用指令碼,應該考慮以程式設計自訂元件,而不要使用指令碼元件。 如需詳細資訊,請參閱 開發自訂資料流程元件。
注意
如果指令碼元件包含指令碼,而該指令碼嘗試讀取 NULL 的資料行值,則當您執行封裝時,此指令碼元件就會失敗。 我們建議您讓您的指令碼使用 IsNull 方法來判斷資料行是否為 NULL,然後再嘗試讀取資料行值。
指令碼元件可當做來源、轉換或目的地使用。 此元件支援一個輸入和多個輸出。 視元件的使用方式而定,可支援輸入、輸出或兩者。 指令碼是由輸入或輸出中的每個資料列所叫用。
如果當做來源使用,指令碼元件可支援多個輸出。
如果當做轉換使用,指令碼元件可支援一個輸入和多個輸出。
如果當做目的地使用,指令碼元件可支援一個輸入。
指令碼元件不支援錯誤輸出。
確定指令碼元件是適用於您封裝的選擇之後,您必須設定輸入和輸出、開發該元件使用的指令碼,以及設定元件本身。
了解指令碼元件模式
在 SSIS Designer 中,指令碼元件有中繼資料設計模式與程式碼設計模式。 在中繼資料設計模式中,您可以加入和修改指令碼元件輸入和輸出,但是不能編寫程式碼。 設定好所有輸入和輸出後,您可以切換到程式碼設計模式編寫指令碼。 指令碼元件會自動從輸入和輸出的中繼資料產生基底程式碼。 如果您在指令碼元件產生基底程式碼後變更中繼資料,您的程式碼可能無法再編譯,因為更新的基底程式碼可能與您的程式碼不相容。
撰寫元件使用的指令碼
指令碼元件使用 Microsoft Visual Studio Tools for Applications (VSTA) 當作撰寫指令碼的環境。 您可以從 [指令碼轉換編輯器] 存取 VSTA。 如需詳細資訊,請參閱指令碼轉換編輯器 ([指令碼] 頁面)。
指令碼元件提供 VSTA 專案,其中包含自動產生的類別,該類別名為 ScriptMain 且代表元件中繼資料。 例如,如果指令碼元件當做具有三個輸出的轉換使用,則 ScriptMain 會包含每個輸出的方法。 ScriptMain 是指令碼的進入點。
VSTA 包含 Visual Studio 環境的所有標準功能,例如色彩編碼的 Visual Studio 編輯器、IntelliSense 和物件瀏覽器。 指令碼元件所使用的指令碼會儲存在封裝定義中, 當您要設計封裝時,指令碼會暫時寫入專案檔。
VSTA 支援 Microsoft Visual C# 和 Microsoft Visual Basic 程式設計語言。
如需有關如何以程式設計方式編寫指令碼元件的詳細資訊,請參閱< 以指令碼元件來擴充資料流程>。 如需有關如何將指令碼元件設為來源、轉換或目的地的特定資訊,請參閱< Developing Specific Types of Script Components>。 如需其他範例 (例如示範如何使用指令碼元件的 ODBC 目的地),請參閱< Additional Script Component Examples>。
注意
不像在舊版中可以指出是否已經預先編譯指令碼,所有指令碼在 SQL Server 2008 Integration Services (SSIS) 與更新版本中都會預先編譯。 指令碼經過先行編譯後,在執行階段不會載入語言引擎,因此封裝的執行速度會更快。 不過,先行編譯的二進位檔案會使用大量的磁碟空間。
設定指令碼元件
您可以利用下列方式設定指令碼元件:
選取要參考的輸入資料行。
注意
使用 SSIS Designer 時,僅能設定一個輸入。
提供元件執行的指令碼。
指定指令碼語言。
提供唯讀和讀取/寫入變數的逗號分隔清單。
加入更多輸出,並加入指令碼指派的目標輸出資料行。
您可以透過 SSIS 設計師或以程式設計方式設定屬性。
在設計工具中設定指令碼元件
如需有關可以在 [指令碼轉換編輯器] 對話方塊中設定之屬性的詳細資訊,請按下列其中一個主題:
如需如何在 SSIS Designer 中設定這些屬性的詳細資訊,請按一下下列主題:
以程式設計的方式設定指令碼元件
如需有關可以在 [屬性] 視窗中或以程式設計的方式設定之屬性的詳細資訊,請按下列其中一個主題:
如需有關如何設定屬性的詳細資訊,請按下列其中一個主題: