回复我删除的帖子
我怀疑(我可能错了)一种将有限数量的行从1个数据流任务传输到另一个的方法是使用DataReader 第一个是ScriptTask,第二个是ScriptTask。
我需要知道如何派生连接字符串以连接到它 DataReader,如果这一切都在一个包中完成。
我一直在寻找一种方法将处理过的行从一个DataFlow任务发送到另一个,以简化我的设计并获得更好的控制。
答案 0 :(得分: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]------------------------------------------------
}
}
}
}