Это - вопрос для SQL Server код.NET и 2008.
Я задаюсь вопросом, что Вы думаете с точки зрения действий, дизайна между этими двумя опциями вставить много данных (> 250 000 строк, 5 “нормальных” столбцов) в таблицу с помощью транзакции.
Или
Или
Кроме того, сеть между клиентом и сервером не очень хороша...
Заранее спасибо.
Поскольку вы уже позаботились о пакетной фиксации, следующей проблемой будет возврат к клиенту и обратно. Чем меньше запросов, тем лучше. Итак, первые два варианта были бы довольно плохими, поскольку каждый отправляет одну строку на запрос и должен выполнять 250 тыс. Циклов приема-передачи. Вариант 3 является жизнеспособным, особенно если обработка XML задана как ориентированная (спроецировать XML в таблицу с помощью метода .nodes () и вставить всю проецируемую таблицу). См. Также Как сериализовать большой граф .NET-объекта в BLOB-объект SQL Server без создания большого буфера , чтобы узнать, как отправить большой XML-код в SQL без огромных выделений памяти на клиенте.
Другой вариант, который вы не упомянули, но уже указали: используйте SqlBulkCopy . Это был бы самый быстрый способ по многим причинам. Единственная проблема заключается в том, что вы должны выдержать способ представления строк для массового копирования с использованием семантики потоковой передачи (возврат IEnumerable), чтобы избежать выделения больших объемов памяти на клиенте.
Как всегда, вы должны профилировать свой код, но я бы рекомендовал вам рассмотреть возможность использования класса SqlBulkCopy.