C# Foreach循环中填充的SSIS对象变量设置为循环外的最后一行,无法访问整个阵列
我有一个SSIS包,它将组装动态SQL语句并在不同的服务器上执行,结果需要写回第一台服务器。 因为SQL是作为变量创建和传入的,所以使用Foreach循环来运行每个实例。结果被放入一个对象变量中,效果很好。如果我将脚本任务放在Foreach循环中,我可以将结果写回原始服务器。然而,出于性能原因,我确实希望从Foreach循环中获取insert,并读取结果集/对象变量以打开一个连接并一次性写入所有数据。但是当我将读取结果并写入数据库的对象拉出循环时,它只写入最后一行数据,而不是全部数据。 如何访问Foreach循环之外的结果集中的所有行?有指向第一行的指针吗?我无法想象我是第一个需要这样做的人,但我对答案的搜索结果却是空的。或者我只是喝了点咖啡因。C# Foreach循环中填充的SSIS对象变量设置为循环外的最后一行,无法访问整个阵列,c#,ssis,C#,Ssis,我有一个SSIS包,它将组装动态SQL语句并在不同的服务器上执行,结果需要写回第一台服务器。 因为SQL是作为变量创建和传入的,所以使用Foreach循环来运行每个实例。结果被放入一个对象变量中,效果很好。如果我将脚本任务放在Foreach循环中,我可以将结果写回原始服务器。然而,出于性能原因,我确实希望从Foreach循环中获取insert,并读取结果集/对象变量以打开一个连接并一次性写入所有数据。但是当我将读取结果并写入数据库的对象拉出循环时,它只写入最后一行数据,而不是全部数据。 如何访问
如果满足某些条件,它可以简化。通常,SSI以元数据为中心,即一组列及其类型。因此,如果运行的每个SQL查询都返回相同的列集,包括列名、数据类型;然后您可以尝试以下方法:
如何使用对象变量作为数据源-这里已经讨论了这个问题如果满足某些条件,它可以简化。通常,SSI以元数据为中心,即一组列及其类型。因此,如果运行的每个SQL查询都返回相同的列集,包括列名、数据类型;然后您可以尝试以下方法:
如何使用对象变量作为数据源-这里已经有了这个问题要重申(同样在咖啡因不足的人群中):按原样,foreach循环触发单个命令。如何将所有单个查询(循环迭代)连接到一个查询中,供循环生成器外部使用?是否有集群?请尝试“multiSubnetFailover=Yes”。请参阅@billinkc-不完全是,抱歉没有说得更清楚。Foreach循环接收对象类型变量(User::CurrRuleSQL)中的数组,提取其中的一列作为目标数据库的SQL语句,该查询的结果存储在不同的数组对象变量[User::ResultSet]。我希望能够从Foreach循环外部读取第二个对象变量。这更有意义吗?@jdweng-cluster?不,我不这么认为。我没有考虑SQL Server解决方案,因为数据在SSIS对象变量中。你是说对象变量可以使用相同的关键字吗?哦,好的。因此对于
C的每次迭代urrRuleSQL
,一个结果集被写入ResultSet
,但是,这会破坏结果,因此您只能得到循环之外可用的CurrRuleSQL
的最后一次迭代的结果来重述(也在咖啡因不足的人群中):按原样,foreach循环触发单个命令。如何将所有单个查询(循环迭代)连接到将在循环生成器外部使用的单个查询中?是否有群集?请尝试“multiSubnetFailover=Yes”。请参见@billinkc-不完全如此,抱歉没有说得更清楚。Foreach循环接收对象类型变量(User::CurrRuleSQL)中的数组,提取其中的一列作为目标数据库的SQL语句,该查询的结果存储在不同的数组对象变量[User::ResultSet]中。我希望能够从Foreach循环外部读取第二个对象变量。这更有意义吗?@jdweng-cluster?不,我不这么认为。我没有考虑SQL Server解决方案,因为数据在SSIS对象变量中。你是说对象变量可以使用相同的关键字吗?哦,好的。因此对于C的每次迭代urrRuleSQL
,一个结果集被写入ResultSet
,但是,这会破坏结果,因此您只能在循环之外获得CurrRuleSQL
的最后一次迭代结果?