Миграция базы данных SQL - проблема производительности (копирование данных из одной базы данных в другую) - PullRequest
0 голосов
/ 16 ноября 2011

Я создал приложение Windows (C # .Net) для переноса данных из одной базы данных в другую. Здесь я выбираю все строки таблицы клиентов из базы данных ABC и вставляю все строки в таблицу дилеров базы данных XYZ.

Моя проблема в том, что когда я выбираю 1000 верхних строк из таблицы, для вставки этих 1000 записей требуется 2 минуты и 35 секунд. но когда я выбираю топ 5000 строк из таблицы, вставка этих 5000 записей занимает 15 минут (не 10 минут)

Есть ли способ оптимизировать производительность, чтобы я мог очень быстро вставить все записи / данные. (Примечание: здесь для каждой записи в цикле foreach я создал sqlparameter и вставил оператор sql)

Также я использовал индикатор выполнения, но когда я теряю фокус из моего приложения Windows, он перестает отвечать на запросы (не отвечает как заголовок окна), и я не вижу статус / прогресс индикатора выполнения (но процесс вставки данных работает в фоновом режиме, но не в пользовательском интерфейсе).

Как решить эти две проблемы ??

1 Ответ

0 голосов
/ 16 ноября 2011

Вы можете создать одиночные команды sql для сотен записей и запустить их, вместо одной команды sql для отдельной записи, это будет работать как основная масса.

http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/12/05/sql-server-2008-t-sql-insert-multiple-rows.aspx

для индикатора выполнения вы можете использовать нить для обновления.

http://msdn.microsoft.com/en-us/library/ms951089.aspx

...