【问题标题】:Creating SSIS package using EzApi使用 EzApi 创建 SSIS 包
【发布时间】:2011-01-12 12:14:07
【问题描述】:

我正在使用 EzApi 创建 SSIS 包。但是,我无法创建具有多个来源和单个目的地的包。例如,两个 OLEDB 源和一个 OLEDB 目标。 我到底想知道的是如何使用 c# 代码添加合并转换。 请帮忙

【问题讨论】:

    标签: ssis packages ezapi


    【解决方案1】:

    EzApi中有一个叫EzMerge的组件 如果您需要创建自定义数据流 - 您可以使用名为 EzDataFlowPackage 的基类:

    class MyPackage: EzDataFlowPackage
    {
            public EzOleDbSource src1;
            public EzOleDbSource src2;
            public EzMerge merge;
            public EzOleDbDest dest;
            public EzOleDbConnectionManager srcConnMgr1;
            public EzOleDbConnectionManager srcConnMgr2;
            public EzOleDbConnectionManager destConnMgr;
    
    
            public EzMyPackage() : base() 
            {
                srcConnMgr1 = new EzOleDbConnectionManager(this);
                srcConnMgr2 = new EzOleDbConnectionManager(this);
                src1 = new EzOleDbSource(DataFlow);
                src2 = new EzOleDbSource(DataFlow);
                dest mew EzOleDbDest(DataFlow);
                src1.Connection = srcConnMgr1;
                src2.Connection = srcConnMgr2;
                dest.Connection = destConnMgr;
                merge = new EzMerge(DataFlow);
                src1.AttachTo(merge);
                src2.AttachTo(merge);
                merge.AttachTo(dest);
            }
    
            public EzMyPackage(Package p) : base(p) { }
    
            public static implicit operator EzMyPackage(Package p) { return new EzMyPackage(p); }
    }
    

    我刚刚输入了这段代码 - 所以它可能包含错误。毕竟,你的包布局已经准备好了。并且您可以简单地设置组件属性。

    【讨论】:

      【解决方案2】:

      我没有使用过 EzApi,但是在 BIDS (Visual Studio) 中,您需要有两个数据源、一个数据目标和一个“合并”组件来连接它:

      像这样:

      编辑

      关于 crating 是程序化的。查看以下链接:

      http://thinkerkk.blogspot.com/2007/08/programmatically-creating-dataflow-with.html

      在注释//create the Merge Transformation后查找代码

      //create the Merge Transformation
      IDTSComponentMetaData90 merge = dataflow.ComponentMetaDataCollection.New();
      merge.ComponentClassID = "DTSTransform.MergeJoin";
      CManagedComponentWrapper mergeDesigntime = merge.Instantiate();
      mergeDesigntime.ProvideComponentProperties();
      merge.Name = "Merge Source1 and source2";
      Console.WriteLine("merge created ");
      merge.InputCollection[0].ExternalMetadataColumnCollection.IsUsed = false;
      merge.InputCollection[0].HasSideEffects = false;
      merge.InputCollection[1].ExternalMetadataColumnCollection.IsUsed = false;
      merge.InputCollection[1].HasSideEffects = false;
      
      //create path from source1 to merge
      /*More code - see article*/
      
      //create path from source2 to merge
      /*More code - see article*/
      

      以下链接对于以编程方式创建 SSIS 包也很有用:

      http://msdn.microsoft.com/en-us/library/ms135946.aspx

      http://blogs.msdn.com/b/mattm/archive/2008/12/30/samples-for-creating-ssis-packages-programmatically.aspx

      【讨论】:

      • 嘿詹姆斯!感谢您的快速回复,但我正在使用 c# 代码创建包。我真正想知道的是如何使用 c# 代码添加合并转换。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多