Самый быстрый способ массовой вставки строк в сервер sql

Через веб-службу удаленные компьютеры будут отправлять набор строк для вставки на наш центральный сервер sql.

Каков наилучший способ (с точки зрения производительности) вставить эти строки? Каждый раз может быть вставлено от 50 до 500 строк.

Я знаю, что могу сделать массовую вставку или отформатировать данные как XML, чтобы вставить их таким образом, но я никогда раньше не делал этого в корпоративных условиях.

Обновления с использованием веб-служб wcf (или, возможно, wse еще не уверены) и стандарта SQL Server 2008.


person bigint    schedule 13.03.2009    source источник
comment
Указание версии SQL-сервера действительно имеет значение.   -  person AnthonyWJones    schedule 13.03.2009


Ответы (5)


Если вы не работаете на 10-летнем компьютере, 50-500 строк — это не очень много; вы можете буквально отправлять операторы SQL и направлять их непосредственно в базу данных и получать отличную производительность. Если, конечно, вы доверяете службам, отправляющим вам данные :-)

Если производительность действительно является проблемой, отправка через файл bcp является самым быстрым способом застревания данных в базе данных. Судя по вашему вопросу, вы уже знаете, как это сделать.

person Chris Winters    schedule 13.03.2009
comment
У меня есть 10-летний компьютер, на котором работает SQL Server 2000, он не будет загружаться при вставке 500 строк. ;) - person AnthonyWJones; 13.03.2009
comment
Оперативной памяти больше 32мб? - person Martin K.; 13.03.2009

Всего 50-500 записей не являются "массовой вставкой". Механизм массовой вставки предназначен для действительно массивного импорта данных, за которым следует немедленное резервное копирование.

В веб-службе я бы просто передал XML на сервер SQL. Особенности будут зависеть от версии.

person AnthonyWJones    schedule 13.03.2009
comment
sql server 2008. Но что, если у меня есть тысячи клиентов, загружающих данные. - person bigint; 13.03.2009
comment
Тысячи клиентов? Делать сколько можно таких постов в день? Возможно, еще один способ посмотреть на это - сколько записей за период активности приложений в день вы ожидаете вставить в общей сложности? - person AnthonyWJones; 13.03.2009

Что это за веб-сервис?

Если это .Net, обычно лучший способ — загрузить входные данные в DataTable, а затем отправить их на сервер SQL с помощью класс SqlBulkCopy

person John    schedule 13.03.2009

50-500 строк не должны быть проблемой! Нет необходимости делать настройку производительности! Выполняйте обычные (подготовленные) операторы SQL в своем приложении.

Не убивайте его сложностью и чрезмерной инженерией.

Когда вам нужно вставить более 250 000 строк, вам следует подумать о масштабировании!

Не отключайте ограничения, вы можете убить БД.

person Martin K.    schedule 13.03.2009

Чтобы повторить все остальные ответы, 500 строк не являются проблемой для SQL-сервера. Если вам нужно вставить большое количество записей, самый быстрый способ — использовать встроенную хранимую процедуру под названием BulkInsert.

Массовая вставка

который (я полагаю) является точкой входа в утилиту SQL Server, разработанную специально для этого, называемую bcp.exe

bcp

person Charles Bretana    schedule 13.03.2009