共用方式為


開發 Integration Services 的自訂物件

當 SQL Server Integration Services 隨附的控制流程與資料流程物件未完全符合您的需求時,可以自行開發許多類型的自訂物件,包括:

  • 自訂工作

  • 自訂連接管理員:連接至目前不支援的外部資料來源。

  • 自訂記錄提供者:使用目前不支援的格式來記錄封裝事件。

  • 自訂列舉值:支援反覆運算一組目前不支援其格式的物件或值。

  • 自訂資料流程元件:可以設定成來源、轉換或目的地。

Integration Services 物件模型使用基底類別來協助此自訂開發,這些基底類別可為您的自訂實作提供一致且可靠的架構。

如果您不必在多個封裝之間重複使用自訂功能,指令碼工作與指令碼元件提供 Managed 程式語言的完整功能,可大幅減少要撰寫的基礎結構程式碼。 如需詳細資訊,請參閱<比較指令碼方案和自訂物件>。

開發 Integration Services 自訂物件的步驟

當您開發要用於 Integration Services 中的自訂物件時,所開發的類別庫 (DLL) 將在設計階段與執行階段由 SSIS 設計師及 Integration Services 執行階段載入。 您必須實作的最重要方法,不是從自己的程式碼呼叫的方法,而是執行階段在適當時間呼叫以初始化並驗證您的元件且叫用其功能的方法。

以下是開發自訂物件所遵循的步驟:

  1. 以您慣用的 Managed 程式語言建立「類別庫」類型的新專案。

  2. 繼承自適當的基底類別,如下表所示。

  3. 將適當的屬性套用至新類別,如下表所示。

  4. 視需要覆寫基底類別的方法,並為物件的自訂功能撰寫程式碼。

  5. 選擇性地為您的元件建立自訂使用者介面。 為了便於部署,您可能會想要以相同方案中的獨立專案開發使用者介面,並將它建立成個別的組件。

  6. 選擇性地在 [SSIS 工具箱] 中顯示範例和自訂物件說明內容的連結。

  7. 建立、部署和偵錯自訂物件中所述建立、部署和偵錯新自訂物件。

基底類別、屬性和重要的方法

這個資料表針對您可以開發的各種類型自訂物件,提供 Integration Services 物件模型中最重要元素的便利參考。

自訂物件

基底類別

屬性

重要的方法

工作

Task

DtsTaskAttribute

Execute

連接管理員

ConnectionManagerBase

DtsConnectionAttribute

AcquireConnection,ReleaseConnection

記錄提供者

LogProviderBase

DtsLogProviderAttribute

OpenLog, Log, CloseLog

列舉值

ForEachEnumerator

DtsForEachEnumeratorAttribute

GetEnumerator

資料流程元件

PipelineComponent

DtsPipelineComponentAttribute

ProvideComponentProperties, PrimeOutput, ProcessInput

提供範例和說明內容的連結

若要在 [SSIS 工具箱] 中顯示範例和以 Managed 程式碼撰寫之自訂物件說明內容的連結,請使用下列屬性。

若要顯示範例和以機器碼撰寫之自訂物件說明內容的連結,請在 SamplesTag、HelpKeyword 和 HelpCollection 的登錄指令碼 (.rgs) 檔案中加入項目。 以下是一個範例。

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

提供自訂使用者介面

若要允許自訂物件的使用者設定其屬性,您可能也必須開發自訂使用者介面。 在並非絕對需要自訂使用者介面的情況下,您可以選擇建立一個介面以提供比預設編輯器更好用的介面。

在自訂使用者介面專案或是組件中,通常有兩個類別:針對特定類型的自訂物件之使用者介面實作 Integration Services 介面的類別,以及它所顯示的 Windows Form,以蒐集使用者資訊。 您實作的介面只有一些方法,而且自訂使用者介面並不難開發。

[!附註]

許多 Integration Services 記錄提供者都有自訂使用者介面,以實作 IDtsLogProviderUI,並以可用連接管理員的篩選下拉式清單,取代 [組態] 文字方塊。 不過,在這個版本的 Integration Services 中並未實作自訂記錄提供者的自訂使用者介面。 指定 DtsLogProviderAttributeUITypeName 屬性值將沒有任何作用。

下表提供您在為每個類型的自訂物件開發自訂使用者介面時,必須實作的介面之便利參考。 它也說明如果您選擇不要為物件開發自訂使用者介面,或是如果您無法使用物件屬性 (Attribute) 中的 UITypeName 屬性 (Property) 將物件連結到其使用者介面時,使用者會看到的內容。 雖然強大的 [進階編輯器] 可能可以滿足資料流程元件,不過,[屬性] 視窗對於工作與連接管理員而言較缺乏使用者親和性,而且如果沒有自訂表單,根本無法設定自訂 ForEach 列舉值。

自訂物件

使用者介面的基底類別

沒有提供自訂使用者介面時的預設編輯行為

工作

IDtsTaskUI

僅 [屬性] 視窗

連接管理員

IDtsConnectionManagerUI

僅 [屬性] 視窗

記錄提供者

IDtsLogProviderUI

(尚未在 Integration Services 中實作)

[組態] 資料行中的文字方塊

列舉值

ForEachEnumeratorUI

僅 [屬性] 視窗。 編輯器的 [列舉值組態] 區域是空的。

資料流程元件

IDtsComponentUI

進階編輯器

外部資源

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的精選解決方案,請瀏覽 MSDN 上的 Integration Services 頁面:


若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。

請參閱

工作

建立、部署和偵錯自訂物件

概念

保存自訂物件