Скорее всего, у вас установлен Recovery model = Full на SQL-сервере.
Это значит, что все транзакции сохраняются до бэкапа. Из-за массовой вставки у вас безумно растет transaction log на SQL-сервере. А поскольку у вас идет постоянное замедление то рискну предположить, что шаг роста слишком маленький и львиную долю времени SQL-сервер тратит не на выполнение транзакций, а на увеличение файла.
Если это так, то увеличивайте инкремент для trnasaction log или делайте чаще бэкапы. А еще лучше курите админские доки.
Кстати, эффект когда на прогресс-бар показывает постепенное замедление связан с тем, что прогресс-бар использует среднюю оценку - он усредняет быстровыполненные операции с медленно выполняющимися последними. Поскольку медленно выполняющихся становится все больше, то и среднее потихоньку увеличивается, при этом потихоньку увеличивается и оценка оставшегося времени. А на самом деле, скорее всего, с какого-то времени все операции у вас выполняются одинаково медленно
Если вы покурили админские доки, но это не помогло,
то есть другой момент:
Цитата:
Сообщение от
bobski
X++:
NumberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId).numberSequence);
salesTable.SalesId = NumberSeq.num();
...
ttscommit;
}
Проверьте, не используете ли вы непрерывную номерную серию для заказов.
Если используете непрерывную, то исправьте код - у вас не хватает вызова метода NumberSeq.used().
Вы не фиксируете факт использования номера, в итоге список незафиксированных номеров у вас растет со старшной силой.