質問: .NetベースのアプリケーションからSQL Serverに大量のデータを送信したい。このデータレコードはCSVファイルから取得されたものであり、SQL Server側のストアドプロシージャを介して取得する必要があります。私はSqlBulkCopyについて知っていますが、SqlBulklCopyはテーブルに直接書き込みます。それは私のためには使えません。私は100.000.000以上のレコードから話しています。私はこの量のデータをメモリに保持することはできません。理想的には、.NetからStored Procedureに何らかの種類のストリーミングデータが存在するかどうかを尋ねます。私はどんな助けにも感謝しています。
回答: 私はテーブル値のパラメータ.aspx)を求めていると思います。 TVP型をデータベースに作成し、ストアドプロシージャ内で使用する方法についての十分な文書があります。 `SqlParameter`設定するときは、 `IEnumerable`を提供することができます`SqlParameter` 、CSVファイルデータレコードを1つずつ直接読み込み、レコードごとに解析し、変換して対応する`SqlDataRecord`を生成するC#イテレータ関数によって簡単に提供できます。 SQL Server側では、ストアドプロシージャに渡される前にデータがtempdbに一括して挿入されますが、少なくともクライアント側では、すべてのデータを保持するメモリは必要ありません。