共用方式為


指令碼工作

指令碼工作提供程式碼,用來執行無法在 SQL Server Integration Services 提供的內建工作和轉換中使用的函式。 指令碼工作亦可在一個指令碼中結合函數,而不使用多項工作和轉換。 您可以使用指令碼工作處理必須在封裝中執行一次 (或是每個列舉物件一次) 的工作,而非每個資料列執行一次的工作。

您可將指令碼工作用於下列用途:

  • 使用其他不受內建連接類型支援的技術存取資料。 例如,指令碼可使用「Active Directory 服務介面」(ADSI) 存取並擷取 Active Directory 中的使用者名稱。

  • 建立封裝專屬的效能計數器。 例如,指令碼可建立效能計數器,並於複雜或效能不佳的工作執行時進行更新。

  • 識別指定的檔案是否空白或其中包含多少資料列,然後根據這項資訊,判斷其是否會影響封裝中的控制流程。 例如,如果檔案包含零個資料列,變數值便會設為 0,而評估該值的優先順序條件約束則會讓「檔案系統」工作無法複製檔案。

如果您必須使用指令碼在集合的每一列資料上執行相同的工作,您應該使用指令碼元件,而非指令碼工作。 例如,如果要評估合理的郵資金額,並略過金額過高或過低的資料列,請使用「指令碼」元件。 如需詳細資訊,請參閱 指令碼元件

如果有多個封裝使用指令碼,請考慮撰寫自訂工作,而不要使用指令碼工作。 如需詳細資訊,請參閱 開發自訂工作

確定指令碼工作是適用於您封裝的選擇之後,您必須同時開發該工作使用的指令碼,以及設定工作本身。

撰寫並執行工作使用的指令碼

指令碼工作使用 Microsoft Visual Studio Tools for Applications (VSTA) 作為撰寫指令碼的環境,以及執行那些指令碼的引擎。

VSTA 提供 Visual Studio 環境的所有標準功能,例如色彩編碼的 Visual Studio 編輯器、IntelliSense 和 [物件總管]。 VSTA 也使用其他 Microsoft 開發工具使用的相同偵錯工具。 指令碼中的中斷點能與 Integration Services 工作和容器上的中斷點合作無間。 VSTA 支援 Microsoft Visual Basic 與 Microsoft Visual C# 程式設計語言。

若要執行指令碼,必須在封裝執行的電腦上安裝 VSTA。 當封裝執行時,工作會載入指令碼引擎並執行指令碼。 您可以在專案中將參考加入至組件,藉此在指令碼中存取外部 .NET 組件。

注意

不像在舊版中可以指出是否已經預先編譯指令碼,所有指令碼在 SQL Server 2008 Integration Services (SSIS) 與更新版本中都會預先編譯。 指令碼經過先行編譯後,在執行階段不會載入語言引擎,因此封裝的執行速度會更快。 不過,先行編譯的二進位檔案會使用大量的磁碟空間。

設定指令碼工作

您可以利用下列方式設定指令碼工作:

  • 提供工作執行的自訂指令碼。

  • 在 VSTA 專案中,將 Integration Services 執行階段呼叫的方法指定為指令碼工作程式碼的進入點。

  • 指定指令碼語言。

  • 選擇性地提供於指令碼中使用的唯讀和讀/寫變數清單。

您可以透過 SSIS 設計師或以程式設計方式來設定這些屬性。

在設計師中設定指令碼工作

下表描述可以為指令碼工作記錄的 ScriptTaskLogEntry 事件。 系統會 ScriptTaskLogEntry 在 [設定 SSIS 記錄] 對話方塊的 [詳細資料] 索引標籤上選取事件進行記錄。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄自訂訊息以進行記錄

記錄項目 描述
ScriptTaskLogEntry 報告在指令碼內實作記錄的結果。 每次呼叫 Log 物件的 Dts 方法時,工作都會寫入記錄項目。 工作會在程式碼執行時撰寫這些項目。 如需詳細資訊,請參閱 Logging in the Script Task

如需有關可在 SSIS 設計師中設定之屬性的詳細資訊,請參閱下列主題:

如需如何在 SSIS Designer 中設定這些屬性的詳細資訊,請參閱下列主題:

以程式設計的方式設定指令碼工作

如需有關以程式設計方式設定這些屬性的詳細資訊,請參閱以下主題: