SqlBulkCopy - это прямой, почти байтовый массив, перенос данных строки из клиента в SQL Server. Это просто самый эффективный способ передачи данных в SQL Server.
Однако его производительность заключается в действительно «массовых» операциях. Сотни или тысячи строк не обязательно достаточно высоки, чтобы оправдать использование. Десятки тысяч или миллионы строк - это производительность SqlBulkCopy. И, в конце концов, все, о чем мы на самом деле говорим, - это получение данных на сервер .
Существуют и другие серьезные проблемы с получением набора строк в таблице производственной базы данных. Переиндексация, переупорядочение (если есть кластеризованный индекс), проверка внешнего ключа, все эти вещи увеличивают время вставки и потенциально могут блокировать таблицы и индексы.
Кроме того, данные TVP записываются на диск (как данные временной таблицы), а затем доступны для размещения в ваших таблицах. SqlBulkCopy способен работать непосредственно за вашим столом ... производительность в этом случае значительно выше, однако для обеспечения параллелизма необходимо сбалансировать скорость.
Я думаю, что общее правило таково: если у вас есть несколько строк для работы, подумайте о TVP, а если у вас много тысяч строк, подумайте о том, чтобы как можно быстрее получить его на SQL Server через SqlBulkCopy.