Мне нужно получить DataTable из SQL, а затем преобразовать его в XML (я не могу использовать SQL XML) и сохранить в файл. Проблема в том, что размер файла составит 5 ГБ, а у меня недостаточно памяти, чтобы загрузить все и преобразовать его в XML одновременно в памяти. Я знаю, что должен быть в состоянии использовать DataReader для преобразования и передачи данных в поток файлов кусками, но я не знаю, как на самом деле это сделать. Как я могу сделать следующее?
- Асинхронно подключаться к серверу SQL
- Вызов хранимой процедуры асинхронно
- Асинхронное чтение данных из DataReader
- Преобразование данных из DataReader в XML и асинхронное сохранение в файл
Все это должно быть асинхронным, потому что оно на сервере, обрабатывающем несколько запросов, и у нас не может быть блокировки потоков для каждого.