创建自定义数据流组件
在 Microsoft SQL Server Integration Services 中,数据流任务会公开一个对象模型,该对象模型允许开发人员使用 Microsoft .NET Framework 和托管代码创建自定义数据流组件:源、转换和目标。
数据流任务由包含 IDTSComponentMetaData100 接口和 IDTSPath100 对象集合的组件组成,这些对象定义组件之间的数据移动。
注意
在您创建自定义提供程序时,需要使用元数据列值更新 ProviderDescriptors.xml 文件。
设计时和运行时
在执行前,称数据流任务处于设计时状态,因为它将接受增量更改。 这些更改可以包括添加或删除组件、添加或删除连接组件的路径对象以及更改组件的元数据。 出现元数据更改时,组件可监视这些更改并对这些更改作出响应。 例如,组件可以禁止某些更改或为响应某一更改而进行其他更改。 在设计时,设计器通过设计时 IDTSDesigntimeComponent100 接口与组件进行交互。
在执行时,数据流任务将检查一系列组件、准备执行计划以及管理执行工作计划的工作线程池。 虽然每个工作线程都执行数据流任务的一些内部工作,但工作线程的主要任务是通过运行时 IDTSRuntimeComponent100 接口调用组件的方法。
创建组件
若要创建数据流组件,可从 PipelineComponent 基类派生类,再应用 DtsPipelineComponentAttribute 类,然后重写适当的基类方法。 PipelineComponent 实现 IDTSDesigntimeComponent100 和 IDTSRuntimeComponent100 接口,并公开这些接口的方法,供您在组件中重写。
根据您的组件所使用的对象,您的项目将需要引用以下部分或全部程序集:
功能 | 要引用的程序集 | 要导入的命名空间 |
---|---|---|
数据流 | Microsoft.SqlServer.PipelineHost | Microsoft.SqlServer.Dts.Pipeline |
数据流包装 | Microsoft.SqlServer.DTSPipelineWrap | Microsoft.SqlServer.Dts.Pipeline.Wrapper |
运行时 | Microsoft.SQLServer.ManagedDTS | Microsoft.SqlServer.Dts.Runtime |
运行时包装 | Microsoft.SqlServer.DTSRuntimeWrap | Microsoft.SqlServer.Dts.Runtime.Wrapper |
下面的代码示例演示了一个简单的组件,该组件从基类派生,并应用 DtsPipelineComponentAttribute。 你需要添加对 DTSPipelineWrap 程序集的引用。
using System;
using Microsoft.SqlServer.Dts.Pipeline;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
namespace Microsoft.Samples.SqlServer.Dts
{
[DtsPipelineComponent(DisplayName = "SampleComponent", ComponentType = ComponentType.Transform )]
public class BasicComponent: PipelineComponent
{
// TODO: Override the base class methods.
}
}
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
<DtsPipelineComponent(DisplayName:="SampleComponent", ComponentType:=ComponentType.Transform)> _
Public Class BasicComponent
Inherits PipelineComponent
' TODO: Override the base class methods.
End Class
随时了解 Integration Services
有关来自Microsoft的最新下载、文章、示例和视频,以及来自社区的所选解决方案,请访问 MSDN 上的 Integration Services 页面:
访问 MSDN 上的 Integration Services 页
若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。