【问题标题】:Send Row from one DataFlow Task to Another将行从一个 DataFlow 任务发送到另一个
【发布时间】:2015-05-06 19:46:57
【问题描述】:

回应我删除的帖子

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

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

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

【问题讨论】:

  • 您的旧链接已失效。一些细节怎么样。
  • 哦...当我看到我的帖子被标记为[被社区删除]时,我简直不敢相信,我不知道只有我可以查看它。我重新编辑的问题中引用了我之前发布的原始问题。

标签: ssis dataflowtask


【解决方案1】:

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

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






}

【讨论】:

    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多