将行从一个DataFlow任务发送到另一个

时间:2015-05-06 19:46:57

标签: ssis dataflowtask

回复我删除的帖子

  

我怀疑(我可能错了)一种将有限数量的行从1个数据流任务传输到另一个的方法是使用DataReader   第一个是ScriptTask,第二个是ScriptTask。

     

我需要知道如何派生连接字符串以连接到它   DataReader,如果这一切都在一个包中完成。

我一直在寻找一种方法将处理过的行从一个DataFlow任务发送到另一个,以简化我的设计并获得更好的控制。

1 个答案:

答案 0 :(得分:0)

这是我解决这个问题的卓越解决方案!

RecordSet Source

RecordSet源代码使用示例

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Linq;
using System.Data.DataSetExtensions;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{

    private OleDbDataAdapter oleDA = new OleDbDataAdapter();
    private DataTable table = new DataTable();
    private DataRow[] result;


    public override void PreExecute()
    {

        base.PreExecute();

        oleDA.Fill(table, Variables.DatabaseObjects);


        var query = from table_address in table.AsEnumerable()

                    select table_address;

        result = query.ToArray<DataRow>();


    }

    public override void PostExecute()
    {
        base.PostExecute();

    }

    public override void CreateNewOutputRows()
    {
        if (result != null)
        {
            foreach (DataRow ro in result)
            {
           Output0Buffer.AddRow();
//----------------------------------------[CHANGE BELOW]-------------------------------------------------
// EXAMPLE:       
       if (ro["File"] != null && ro["Sequence_ID"] != null && ro["Execution_ID"] != null && ro["Object"] != null)
                {
                    Output0Buffer.File = ro["File"].ToString();
                    Output0Buffer.SequenceID = Convert.ToInt64(ro["Sequence_ID"]);
                    Output0Buffer.Object = ro["Object"].ToString();
                    Output0Buffer.ExecutionID = Convert.ToInt64(ro["Execution_ID"]);
            }
//--------------------------------------- [CHANGE ABOVE]------------------------------------------------
            }
        }
    }






}