C# 在SSIS中传递更新的对象

C# 在SSIS中传递更新的对象,c#,sql,tsql,ssis,ssms,C#,Sql,Tsql,Ssis,Ssms,在我的工作中,我遇到了以下问题:如果我们要处理大量数据,sql或t-sql的速度非常慢。我的意思是数百万或数十亿行,这样(当您需要在内部使用while或在递归中使用递归时)SSMS(MS SQL)的工作速度不快(我还尝试了索引和许多其他SQL技巧)。我知道其他编程语言以这种方式工作得更快——现在我正尝试将数据从sql传递到C#(使用SSIS sql和脚本任务)或Java(NetBeans)。请您帮助我并分享有关如何将SSIS脚本任务中更新的对象变量传递到sql任务(insert)的任何功能。我不

在我的工作中,我遇到了以下问题:如果我们要处理大量数据,sql或t-sql的速度非常慢。我的意思是数百万或数十亿行,这样(当您需要在内部使用while或在递归中使用递归时)SSMS(MS SQL)的工作速度不快(我还尝试了索引和许多其他SQL技巧)。我知道其他编程语言以这种方式工作得更快——现在我正尝试将数据从sql传递到C#(使用SSIS sql和脚本任务)或Java(NetBeans)。请您帮助我并分享有关如何将SSIS脚本任务中更新的对象变量传递到sql任务(insert)的任何功能。我不知道SSIS,但我在那里的70%的经验是构建DWH,上次我只为messege box使用了脚本任务

我知道首先我们需要在sql任务中从sql中获取数组(表),并将其传递给对象varialbe。 第二步是更新脚本任务中的数据。 第三个是从步骤2中获取对象,并将其插入到sql更新的数据中。 你能帮我做第二步和第三步吗?如何在C#脚本任务中创建输出变量(例如,我们有一列的表,希望将所有值递增为1)并移动到下一个SSIS块

我想进一步描述这个例子:

  • 我们有一个表,其中有一列名为i,值为0
  • 我们在完整的结果集中传递表中的值(sql任务)
  • 如何在c#脚本任务中进行更改,并返回从上一步获得的变量的新值

  • 谢谢。

    创建Object类型的新变量。使用数据流任务将数据发送到目标对象变量,并将该变量传递给脚本任务。然后可以在脚本任务中将对象转换为DataTable类型,如下所示:

    var data = (DataTable)Dts.Variables["User::MyHugeDataSet"].Value;
    

    希望这能有所帮助,但我强烈建议您重新审视自己的需求,看看是否有一种基于集合的方法可以在SQL中实现这一点。在这里执行您试图执行的操作几乎总是一个坏主意。

    您试图解决的问题是什么?我想将表作为完整的结果集从sql任务传递到脚本任务。在脚本任务中,我希望操作对象变量的数据,并将更新的对象(表列)移动到另一个sql任务。我知道如何进行第一步,但不知道如何将更新的对象变量从脚本任务移动到SSIS中的另一个sql任务。在while条件下处理大型阵列时,sql太慢。我的意思是在c#script任务中更新数据,然后在c#scripts组件的构造“insert into db.dbo.table values(?,,?等)”中的sql任务中插入值。只是想在SSIS中实现这一点。