Я написал некоторое программное обеспечение для обработки зарплаты, которое в конечном итоге записывает данные в таблицу SQL Server, используя SqlDataAdapter.Insert()
. (Я использую команду по умолчанию, созданную с помощью SqlCommandBuilder()
.) Я использую .NET Framework 4 в Windows 7, записывая SQL Server 2008 (не R2) Std Edition x64 SP3. Проблема в том, что я вижу только пропускную способность 2 Мбит/с с моего ПК (Dell Optiplex 990 Core i7) на SQL Server (сетевые адаптеры на моем ПК и на сервере - GB Enet, но есть несколько переключателей 100 Мбит/с между неудачным узким местом, но все же - 100 Мбит/с). Я могу скопировать файл с моего ПК на сервер, на котором работает SQL Server, и у меня нет проблем с пропускной способностью - я могу получить очень близкую пропускную способность до 100 Мбит/с. Я поместил базу данных на другой LAN SQL Server с 2008 R2, и мне удалось получить пропускную способность 5 Мбит/с, но все же - очень медленно. Процессор моего ПК близок к 0, когда запущена команда Insert()
. Я попытался увеличить и уменьшить параметр Packet Size в свойстве SqlConnection.ConnectionString
, но это ничего не сделало.SqlDataAdapter Вставьте плохую производительность
Если я выполняю команду SELECT * FROM <table>
из SSMS на своем ПК на SQL Server, о которой идет речь, я могу получить пропускную способность около 45 Мбит/с.
Я не уверен, где искать ближайшего виновника - любые одобренные предложения.
Сколько строк было изменено при выполнении обновления? Команда Update обрабатывает только измененные строки. Также почему вы делаете 'Select * from
@ScottChamberlain - общая аневризма мозга там - я имел в виду действительно 'Insert()'. Вопрос исправлен. – Conrad
Хорошо, сколько строк вы вставляете сразу? –
ответ
Вставка SqlDataAdapter в свои записи по одному, если вы вставляете много записей, вы должны использовать SqlBulkCopy вместо этого, чтобы уменьшить накладные расходы на выполнение этих вставок.
источник
2013-07-30 21:22:15
Большое спасибо - это именно то, что я искал. – Conrad
Смежные вопросы