Размер пакета sqlbulkcopy в зависимости от количества строк в таблице данных - PullRequest
0 голосов
/ 15 марта 2012

Нужно ли мне убедиться, что каждая партия полностью заполнена? то есть, если бы у меня был набор данных со 12028 строками, мог бы я просто использовать размер пакета 10 КБ, и он автоматически создал бы 2 пакета, 1 с 10 КБ и 1 с 2028 К?

Спасибо.

1 Ответ

1 голос
/ 15 марта 2012

Согласно MSDN: SqlBulkCopy.BatchSize -

Если экземпляр SqlBulkCopy был объявлен без Действует опция UseInternalTransaction, строки отправляются на сервер BatchSize строк за один раз, но никакие связанные с транзакцией действия не предпринимаются. Если UseInternalTransaction действует, каждый пакет строк вставляется как отдельная транзакция.

Свойство BatchSize может быть установлено в любое время. Если массовая копия уже выполняется, текущая партия имеет размер в соответствии с предыдущий размер партии. Последующие партии используют новый размер. Если BatchSize изначально равен нулю и изменяется в то время как WriteToServer операция уже выполняется, эта операция загружает данные как одна партия Любые последующие операции WriteToServer на том же Экземпляр SqlBulkCopy использует новый BatchSize.

Исходя из этой информации, я склонен полагать, что при установке размера пакета на 10 000 строк и предоставлении 12 000+ будет создано несколько пакетов.

...