指令碼工作
指令碼工作提供程式碼,用來執行無法在 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 中設定這些屬性的詳細資訊,請參閱下列主題:
以程式設計的方式設定指令碼工作
如需有關以程式設計方式設定這些屬性的詳細資訊,請參閱以下主題:
相關內容
- shareourideas.com 上的技術文件: 如何在 C# 中傳送包含傳遞通知的電子郵件(如何在 C# 中傳送包含傳遞通知的電子郵件)