Share via


指令碼工作

更新: 2006 年 7 月 17 日

指令碼工作提供程式碼,用來執行無法在 SQL Server 2005 Integration Services 提供的內建工作和轉換中使用的函數。指令碼工作亦可在一個指令碼中結合函數,而不使用多項工作和轉換。您可以使用指令碼工作處理必須在封裝中執行一次 (或是每個列舉物件一次) 的工作,而非每個資料列執行一次的工作。如果您必須使用指令碼在集合的每一列資料上執行相同的工作,您應該使用「指令碼」元件,而非指令碼工作。例如,如果要評估合理的郵資金額,並略過金額過高或過低的資料列,請使用「指令碼」元件。如需詳細資訊,請參閱<指令碼元件>。

指令碼工作建立的程式碼是自訂的 Microsoft Visual Basic .NET 程式碼,會在執行階段於封裝中編譯和執行。

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

  • 使用其他不受內建連接類型支援的技術存取資料。例如,指令碼可使用「Active Directory 服務介面」(ADSI) 存取並擷取 Active Directory 中的使用者名稱。
  • 建立封裝專屬的效能計數器。例如,指令碼可建立效能計數器,並於複雜或效能不佳的工作執行時進行更新。
  • 識別指定的檔案是否空白或其中包含多少資料列,然後根據這項資訊,判斷其是否會影響封裝中的控制流程。例如,如果檔案包含零個資料列,變數值便會設為 0,而評估該值的優先順序條件約束則會讓「檔案系統」工作無法複製檔案。

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

  • 提供工作執行的自訂指令碼。
  • 指定作為指令碼中進入點的函數名稱。
  • 指示是否預先編譯指令碼。
  • 選擇性地提供於指令碼中使用的唯讀和讀/寫變數清單。

指令碼工作會使用 Visual Studio for Applications (VSA) 作為其寫入和執行指令碼的引擎。若要執行指令碼,必須在封裝執行的電腦上安裝 VSA。

如需撰寫指令碼工作程式碼的詳細資訊,請參閱<Extending the Package with the Script Task>。

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

Visual Studio for Applications 環境

指令碼工作可讓您存取 VSA 環境。Visual Studio .NET 環境的所有標準功能都可使用,例如色彩編碼的 Visual Studio 編輯器、IntelliSense 和「物件總管」。

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

指令碼工作提供數項超越 ActiveX Script 工作的優點:

  • 整合式開發環境。VSA 提供您的 IDE 與其他 Microsoft 開發工具所提供的 IDE 相同。
  • 整合式偵錯工具。VSA 可讓您使用與其他 Microsoft 開發工具所提供相同的偵錯工具進行指令碼偵錯。指令碼中的中斷點能與 Integration Services 工作和容器上的中斷點合作無間。
  • 使用 Common Language Runtime 語言
  • 與 SSIS 設計師整合。

指令碼工作取代了 ActiveX Script 工作。只有為了回溯相容性而有必要時才使用 ActiveX Script 工作。 下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。

最佳化

VSA 指令碼必須先行編譯,封裝才能執行。指令碼工作含有在儲存封裝時將指令碼先行編譯成二進位碼的選項。若先行編譯指令碼,語言引擎便不會在執行階段載入,且封裝執行的速度會更快;不過,已編譯的二進位檔案會消耗大量磁碟空間。如果沒有使用先行編譯選項,指令碼會在執行階段進行編譯,如此會減慢封裝執行的速度,但消耗的磁碟空間較少。如果儲存大型封裝不成問題,則應先行編譯 VSA 指令碼。此外,只有先行編譯的指令碼可以在 64 位元環境中執行。

選擇是否先行編譯指令碼的另一項考量因素是您不能偵錯編譯過的指令碼。依預設,指令碼工作設定為先行編譯其指令碼,而其 PreCompile 屬性則設定為 TruePreCompile 屬性通常會在封裝開發及偵錯期間設定為 False,再於部署封裝之前重設為 True

指令碼工作上可用的自訂記錄訊息

下表描述「指令碼」工作的自訂記錄項目。如需詳細資訊,請參閱<在封裝中實作記錄>和<自訂訊息以進行記錄>。

記錄項目 描述

ScriptTaskLogEntry

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

設定指令碼工作

您可以透過「SSIS 設計師」或以程式設計的方式來設定屬性。

如需有關可以在「SSIS 設計師」中設定之屬性的詳細資訊,請按下列其中一個主題:

如需有關如何在「SSIS 設計師」中設定這些屬性的詳細資訊,請按下列主題:

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

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

請參閱

概念

Integration Services 工作
建立封裝控制流程
64 位元電腦上的 Integration Services 考量

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

變更的內容:
  • 新增自訂記錄項目的表格。

2005 年 12 月 5 日

變更的內容:
  • 新增有關指令碼工作和「指令碼」元件最佳用法的提示。