2009-03-13 9 views
8

A través de un servicio web, las computadoras remotas enviarán un conjunto de filas para insertarlas en nuestro servidor sql central.Forma más rápida de insertar filas a granel en el servidor sql

¿Cuál es la mejor forma (en cuanto a rendimiento) de insertar estas filas? Podría haber de 50 a 500 filas para insertar cada vez.

Sé que puedo hacer una inserción masiva o formatear los datos como XML que lo insertan de esa manera, pero nunca antes lo había hecho en una configuración empresarial.

Actualizaciones que utilizan los servicios web WCF (o tal vez wse no está seguro todavía) y el estándar SQL Server 2008.

+1

la indicación de la versión del servidor SQL realmente hace la diferencia. – AnthonyWJones

Respuesta

3

¿Qué tipo de servicio web es este?

Si se trata de .Net, por lo general la mejor manera es cargar la entrada en un DataTable, a continuación, disparar hacia arriba con el servidor SQL utilizando la clase SqlBulkCopy

5

A no ser que se está ejecutando en un equipo de 10 años , 50-500 filas no son muchas; usted podría enviar literalmente declaraciones SQL y canalizarlas directamente a la base de datos y obtener un gran rendimiento. Asumiendo que confía en los servicios que le envían datos, por supuesto :-)

Si el rendimiento es realmente un problema, el envío de un archivo bcp es absolutamente la forma más rápida de atascar datos en la base de datos. Suena por tu pregunta que ya sabes cómo hacer esto.

+0

Tengo una computadora de 10 años que ejecuta SQL Server 2000, no se agregará en una inserción de 500 filas. ;) – AnthonyWJones

+0

¿Tiene más de 32 MB de memoria principal? –

2

¡50-500 filas no deberían ser un problema! ¡No hay necesidad de hacer ajustes de rendimiento! Haga declaraciones SQL normales (preparadas) en su aplicación.

No lo mate con complejidad y sobreingeniería.

Cuando debe insertar más de 250,000 filas, ¡debería pensar en escalar!

No desactive las restricciones, puede matar la base de datos.

4

Apenas 50-500 registros no constituye una "inserción masiva". El mecanismo de inserción masiva está diseñado para una importación realmente masiva de datos que se debe seguir inmediatamente con una copia de seguridad.

En el servicio web simplemente pasaría el XML al servidor SQL. Los detalles dependerán de la versión.

+0

sql server 2008. Pero qué pasa si tengo miles de clientes cargando datos. – bigint

+0

¿Miles de clientes? ¿Cómo pueden esos mensajes por día?Quizás otra forma de verlo es ¿cuántos registros sobre el período activo de las aplicaciones en un día esperan ser insertados en total? – AnthonyWJones

2

Para repetir el resto de las respuestas, 500 filas no son un problema para el servidor SQL. Si necesita insertar un gran número de registros, la forma más rápida es con un proc incorporado almacenado llamado BulkInsert,

BulkInsert

la que (creo) es un punto de entrada a una utilidad de SQL Server diseñado específicamente para hacer esto llama bcp.exe

bcp

Cuestiones relacionadas