从SQL Server处理大量数据

时间:2018-12-19 07:14:17

标签: c# sql-server multithreading yield-return

我有一个存储过程(SQL Server 2016),当前基于该SP的参数返回100K至200K行。

每行的大小可以为100KB至200KB。因此,总大小约为10GB到20GB。

我的客户端(后台作业)必须调用此SP并处理所有行并将其发送给另一个客户端。

处理此类情况的最佳方法是什么?

目前,我正在考虑使用使用yield的流式枚举器。

每当“ datareader.Read()”读取一行并对其进行处理并将其发送给其他客户端时,获取记录。

dataReader = command.ExecuteReader();                    
while (dataReader.Read())
{
    obj = new SomeClass();

    // prepare Someclass

    yield return obj;
}

这种方法足以处理如此大的数据吗?

有什么更好的方法吗? (例如多线程等)

如果是这样,我应该如何处理。有指针要参考吗?

编辑:SP有多个联接,一天运行几次。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我认为这是实现SSIS(集成服务)的好方案,该SSIS可以管理最终结果并将其写入CSV文件,并允许客户交换。