1

回应我删除的帖子

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

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

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

4

1 回答 1

0

这是我对这个问题的非凡解决方案!

记录集源

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]------------------------------------------------
            }
        }
    }






}
于 2015-05-06T19:46:57.343 回答