WEB开发网
开发学院数据库MSSQL Server 为SSIS编写自定义数据流组件(DataFlow Component)... 阅读

为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件

 2009-09-19 00:00:00 来源:WEB开发网   
核心提示:上一篇,我们讲到了一个简单的步骤,为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件,包括创建项目,部署和测试,它需要定义到底输出哪些列,那么这个是在哪里定义的呢? 我们需要做的是重写ProvideComponentProperties方法publicoverridevoidPr

上一篇,我们讲到了一个简单的步骤,包括创建项目,部署和测试。这一节,首先来探讨一下数据源组件的设计

1. 添加几个引用。请确保添加了下图所示的四个引用,以及添加了相应的using语句

为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件

图片看不清楚?请点击这里查看原图(大图)。

【注意】为了更好地表达我的目的,我已经修改了该组件的名字。它现在是一个“文件夹数据源”,目的是用来读取一个文件夹的文件信息。想想看,你是不是正好有这样的需求呢

2. 添加输出列的定义

作为一个数据源,很显然,它需要定义到底输出哪些列。那么这个是在哪里定义的呢? 我们需要做的是重写ProvideComponentProperties方法

    public override void ProvideComponentProperties()
    {
      ComponentMetaData.RuntimeConnectionCollection.RemoveAll();
      RemoveAllInputsOutputsAndCustomProperties();
      IDTSCustomProperty90 folder = ComponentMetaData.CustomPropertyCollection.New();
      folder.Name = "Folder";//怎么样设置该属性让他可以绑定表达式?

      IDTSOutput90 output = ComponentMetaData.OutputCollection.New();
      output.Name = "MyOutput";

      //初始化的时候,准备几个输出列
      IDTSOutputColumn90 fileNameColumn = output.OutputColumnCollection.New();
      fileNameColumn.Name = "FileName";
      fileNameColumn.SetDataTypeProperties(DataType.DT_WSTR, 256, 0, 0, 0);
      //如果是非Unicode则要提供CodePage,其他的类型可以设置为0

      IDTSOutputColumn90 fileSizeColumn = output.OutputColumnCollection.New();
      fileSizeColumn.Name = "FileSize";
      fileSizeColumn.SetDataTypeProperties(DataType.DT_I8, 0, 0, 0, 0);

      IDTSOutputColumn90 fileExtensionColumn = output.OutputColumnCollection.New();
      fileExtensionColumn.Name = "FileExtension";
      fileExtensionColumn.SetDataTypeProperties(DataType.DT_WSTR, 50, 0, 0, 0);
      //怎么让用户无法编辑这个输出和列的信息呢?
    }

1 2 3 4 5  下一页

Tags:SSIS 编写 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接