Я предполагаю, что вы делаете транзакционные вставки: вставки, которые выглядят так:
INSERT INTO dbo.MyTable (Field1, Field2, Field3)
VALUES (50, 100, 150)
Это сработает, но, как вы уже нашли, это не масштабируется. Для быстрой загрузки большого количества данных в SQL Server существуют инструменты и методы для их извлечения.
Вероятно, самый простой способ сделать это с помощью BCP. Вот несколько ссылок об этом:
Далее вам нужно настроить SQL Server, чтобы вставить как можно больше записей. Ваша база данных находится в режиме полного восстановления или в простом режиме восстановления? Чтобы узнать это, перейдите в SQL Server Management Studio, щелкните правой кнопкой мыши имя базы данных и выберите Свойства. Режим полного восстановления будет регистрировать каждую транзакцию, но простой режим восстановления будет работать несколько быстрее. Находятся ли файлы данных и файлы журналов в отдельных массивах? Сколько дисков в каждом массиве и какой тип RAID (1, 5, 10)? Например, если и данные, и файлы журналов находятся на диске C, производительность будет низкой.
Далее вы тоже захотите накрыть стол. У вас есть ограничения и индексы в таблице? У вас уже есть другие записи, и есть ли другие люди, которые запрашивают это в то же время? Если это так, рассмотрите возможность создания пустой таблицы для загрузки данных без индексов или ограничений. Сбросьте все данные как можно быстрее, а затем примените ограничения или индексы или переместите данные в конечный пункт назначения.