開發 Integration Services 的自訂物件
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
當 SQL Server Integration Services 隨附的控制流程與資料流程物件無法完全滿足需求時,您可以自行開發許多類型的自訂物件,包括:
自訂工作。
自訂連線管理員: 連線至目前不支援的外部資料來源。
自訂記錄提供者: 使用目前不支援的格式來記錄套件事件。
自訂列舉程式: 支援反覆運算一組目前不支援其格式的物件或值。
自訂資料流程元件: 可以設定為來源、轉換或目的地。
Integration Services 物件模型使用基底類別來協助此自訂開發,這些基底類別可為您的自訂實作提供一致且可靠的架構。
如果您不必在多個封裝之間重複使用自訂功能,指令碼工作與指令碼元件提供 Managed 程式語言的完整功能,可大幅減少要撰寫的基礎結構程式碼。 如需詳細資訊,請參閱比較指令碼解決方案和自訂物件。
開發 Integration Services 自訂物件的步驟
當您開發要用於 Integration Services 中的自訂物件時,所開發的類別庫 (DLL) 將在設計階段與執行階段由 SSIS Designer 及 Integration Services 執行階段載入。 您必須實作的最重要方法,不是從自己的程式碼呼叫的方法,而是執行階段在適當時間呼叫以初始化並驗證您的元件且叫用其功能的方法。
以下是開發自訂物件所遵循的步驟:
以您慣用的 Managed 程式語言建立「類別庫」類型的新專案。
繼承自適當的基底類別,如下表所示。
將適當的屬性套用至新類別,如下表所示。
視需要覆寫基底類別的方法,並為物件的自訂功能撰寫程式碼。
選擇性地為您的元件建立自訂使用者介面。 為了便於部署,您可能會想要以相同方案中的獨立專案開發使用者介面,並將它建立成個別的組件。
選擇性地在 [SSIS 工具箱] 中顯示範例和自訂物件說明內容的連結。
依建置、部署和偵錯自訂物件中所述,建置與部署新的自訂物件,並進行偵錯。
基底類別、屬性和重要的方法
針對您可以開發的各種類型自訂物件,這個資料表提供 Integration Services 物件模型中最重要元素的便利參考。
自訂物件 | 基底類別 | 屬性 | 重要的方法 |
---|---|---|---|
Task | Task | DtsTaskAttribute | Execute |
[ODBC 來源編輯器] | ConnectionManagerBase | DtsConnectionAttribute | % |
記錄提供者 | LogProviderBase | DtsLogProviderAttribute | OpenLog }, |
列舉值 | ForEachEnumerator | DtsForEachEnumeratorAttribute | GetEnumerator |
資料流程元件 | PipelineComponent | DtsPipelineComponentAttribute | ProvideComponentProperties }, |
提供範例和說明內容的連結
若要在 [SSIS 工具箱] 中顯示範例和自訂物件 (以受控碼撰寫) 的說明內容連結,請使用下列屬性。
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpKeyword*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpKeyword*
若要顯示範例和以機器碼撰寫之自訂物件說明內容的連結,請在 SamplesTag、HelpKeyword 和 HelpCollection 的登錄指令碼 (.rgs) 檔案中加入項目。 以下是一個範例。
val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'
val SamplesTag = s 'ExecutePackageTask'
提供自訂使用者介面
若要允許自訂物件的使用者設定其屬性,您可能也必須開發自訂使用者介面。 在並非絕對需要自訂使用者介面的情況下,您可以選擇建立一個介面以提供比預設編輯器更好用的介面。
在自訂使用者介面專案或是組件中,通常有兩個類別:其中一個類別可實作 Integration Services 介面,用於特定類型自訂物件的使用者介面;另一個則是它所顯示的 Windows 表單,用於蒐集使用者資訊。 您實作的介面只有一些方法,而且自訂使用者介面並不難開發。
注意
許多 Integration Services 記錄提供者都有自訂使用者介面,以實作 IDtsLogProviderUI,並將 [組態] 文字輸入框取代為可用的連線管理員篩選下拉式清單。 不過,此版本的 Integration Services 並未實作自訂記錄提供者的自訂使用者介面。 指定 UITypeName 的 DtsLogProviderAttribute 屬性值將沒有任何作用。
下表提供您在為每個類型的自訂物件開發自訂使用者介面時,必須實作的介面之便利參考。 它也說明在下列情況下使用者會看到的內容:當您選擇不要為物件開發自訂使用者介面,或當您無法使用物件屬性 (Attribute) 中的 UITypeName 屬性 (Property) 將物件連結到其使用者介面時。 雖然強大的 [進階編輯器] 可能可以滿足資料流程元件,不過,[屬性] 視窗對於工作與連接管理員而言較缺乏使用者親和性,而且如果沒有自訂表單,根本無法設定自訂 ForEach 列舉值。
自訂物件 | 使用者介面的基底類別 | 沒有提供自訂使用者介面時的預設編輯行為 |
---|---|---|
Task | IDtsTaskUI | 僅 [屬性] 視窗 |
[ODBC 來源編輯器] | IDtsConnectionManagerUI | 僅 [屬性] 視窗 |
記錄提供者 | IDtsLogProviderUI (Integration Services 中未實作) |
[設定] 資料行中的文字方塊 |
列舉值 | ForEachEnumeratorUI | 僅 [屬性] 視窗。 編輯器的 [列舉值組態] 區域是空的。 |
資料流程元件 | IDtsComponentUI | 進階編輯器 |
外部資源
- blogs.msdn.com 上的部落格文章 Visual Studio solution build process give a warning about indirect dependency on the .NET Framework assembly due to SSIS references (Visual Studio 方案建置程序提出了因為 SSIS 參考而與 .NET Framework 組件之間有間接相依性的警告 )。